Skip to content
Veyra logo

Veyra

AI Assistant for Live Meetings

Beta 1.0macOS 14+ · Apple SiliconLocal-first

A macOS desktop assistant that listens to a meeting, decides whether what was just said is worth answering, and puts an answer on screen while you are still talking. Capture, transcription, understanding, embeddings and retrieval all run on the machine. The only thing that leaves is the question and the context you chose to give it.

Architecture

Where the Work Happens

As much as possible stays on your Mac. What leaves is the question and the context you chose to give it, sent to the provider you picked — a single wire out, and that is the whole argument.

On your Mac
  • Audio capture

    System audio and microphone, echo-cancelled on device.

  • Speech to text

    A two-pass local model. Your voice never leaves the Mac.

  • Understanding

    A local model decides whether a turn is worth answering.

  • Embeddings

    Your documents are turned into vectors locally.

  • Retrieval

    A local vector database. 18 ms p95, measured.

  • Everything else

    Workspaces, briefings, profile, reports, settings.

Your provider

Exactly three operations leave the machine. Everything else in the list beside this one never does.

  • Generating the answer
  • Synthesising a briefing
  • Generating your profile
Key custody

The API key lives in the macOS Keychain and is read only by the part of Veyra that talks to the provider. No IPC channel in the app can return it — structural, not a policy.

Your cost is whatever your provider and model charge. Point Veyra at a model running on your own machine and there is no bill at all.

A Desktop App Built Around One Constraint

A meeting does not wait. Everything in Veyra's architecture follows from a two-second budget — end of speech to first readable word — so the expensive, network-bound step is reduced to exactly one: generating the answer. Everything that can run locally does, because a round trip you don't make is the only latency you can be certain of.

App & Interface

Electron, React 19, TypeScript (strict), Tailwind CSS v4, a floating always-on-top overlay window, three global shortcuts

On-Device Pipeline

Two-pass local speech-to-text, a local understanding model, local embeddings, LanceDB vector store, macOS Keychain custody

What It Actually Does

  • 01Answers Mid-Sentence: The overlay classifies a turn, retrieves context and streams an answer without you touching anything.
  • 02Knows Your Background: A profile built from your CV and notes sits behind every answer, in chat and in a live meeting.
  • 03Walks In Prepared: Briefings gather the agenda, documents and conversations a specific call needs, indexed before it starts.
  • 04Keeps Rooms Separate: Workspaces isolate knowledge completely. There is no cross-workspace retrieval, ever.
Captured from a real build, driving a real local model

How It Works

01. The Overlay

The Overlay, Listening

A floating panel that sits above whatever meeting app you already use. It drags anywhere and remembers its position per display. The composer placeholder doubles as a status line — here it is reporting, truthfully, that speech models still need downloading before it can listen.

Veyra — overlay.png
The Overlay, Listening
02. Understanding

Classifying a Turn

The moment a question lands, a local model decides whether it is worth answering. Backchannels — 'mm-hmm', 'right', 'go on' — are never answered at any sensitivity. This decision happens on-device precisely because a network round trip here would spend the entire latency budget.

Veyra — classifying.png
Classifying a Turn
03. The Answer

The Answer Streams

Retrieval returns context from the local vector store, and the answer streams in from the provider you configured. This capture is real output from a 1B local model — small enough that its prose is rough, which is exactly why the screenshot is shown as-is rather than restaged.

Veyra — answer.png
The Answer Streams
04. Response Control

Two Orthogonal Controls

Response mode decides when an answer is paid for; sensitivity decides what counts as worth answering. Aggressive never overrides On click. These are deliberately two settings rather than one three-way switch, because 'listen to everything, but say nothing until I ask' is a real state that a single control cannot express.

Veyra — overlay-control.png
Two Orthogonal Controls
05. Profile

The Profile Behind Every Answer

Built from your CV and notes, and used automatically — you never switch it on. The build step shows the real token estimate before it runs. Veyra also fact-checks its own output: this capture caught the local model inventing three figures that appeared in no source, and flagged them rather than presenting them silently.

Veyra — profile.png
The Profile Behind Every Answer
06. Briefings

Briefings for a Specific Call

An agenda, the documents that matter, and optionally a connected conversation — Google Calendar and Gmail share one Google sign-in, Slack is separate, all read-only. What a connector brings in is used for that meeting and disposed when it ends. It is never added to permanent knowledge.

Veyra — briefings.png
Briefings for a Specific Call
07. Knowledge

Knowledge, Indexed Locally

Documents are embedded on-device and stored in a local vector database. The index reports its own size and chunk count, and a document row expands inline to show exactly which text a chunk holds — retrieval you can audit rather than trust.

Veyra — knowledge.png
Knowledge, Indexed Locally
08. Isolation

Workspaces Don't Leak

The same Knowledge page, switched to a second workspace: zero documents, zero chunks, zero bytes indexed. A document added in one workspace is not merely hidden in another — it is unreachable. This is the isolation guarantee demonstrated rather than asserted.

Veyra — workspaces.png
Workspaces Don't Leak
09. Providers

Any OpenAI-Compatible Endpoint

OpenAI, OpenRouter and Gemini ship as presets, but the provider layer speaks a protocol rather than a vendor. Adding Ollama, LM Studio or vLLM is a base URL and a model name — never new code. Leave the model blank and Veyra asks the endpoint what it offers.

Veyra — providers.png
Any OpenAI-Compatible Endpoint
The Main Window

Beyond the Overlay

The overlay is what you see during a meeting. Everything that makes it useful is configured, indexed and audited here.

Readiness at a Glance

Home

A time-of-day greeting, the active workspace, and an honest account of what is not ready yet.

  • A 'Ready to listen' card tracks speech models, local AI models and the AI provider, each with its own action.
  • Profile, active briefing and recent chat surface as entry points rather than buried navigation.
  • A persistent status bar reports the local database, the backend, and a live count of pending sync items.
The Same Brain, Outside a Meeting

Chat

Everything the overlay knows is reachable in a normal conversation — grounded in the profile and the indexed documents.

  • Answers stream token by token with a Stop control, exactly as they do in the overlay.
  • Responses draw on both the generated profile and the local knowledge index.
  • Citations render only for content the answer actually references by marker — never fabricated to look rigorous.
Speech Models, Stated Plainly

Voice

The page tells you what it needs and what it costs in disk space before you commit to anything.

  • Model requirements shown as real sizes and item counts, not a progress bar with no context.
  • An optional accuracy pack lists each additional model and its download size individually.
  • Voice enrolment is offered for better attribution, and is entirely optional.
Three Connectors, Two Accounts

Connectors

Google Calendar and Gmail share a single Google grant; Slack is separate. All read-only.

  • Per-workspace enablement, so a connector authorised once is not automatically live everywhere.
  • Connector data is scoped to a meeting and disposed at the end of it.
  • Shown here in its true default state on a server with no OAuth app configured — not a staged mock.
Veyra — Home
Home
Screen changes on scroll
The Engineering Problem

The Two-Second Budget

The hard problem was never generating an answer — it was deciding, fast enough to matter, whether an answer was wanted at all. Veyra runs a local model over every turn to classify it before a single token is paid for, which means the cheap decision happens on-device in the gap where a network call would have cost the whole budget. Retrieval sits behind that at 18 ms p95, measured against the local vector store. The two-second target is what the system is designed for; it has not yet been measured end-to-end in a live meeting, and the product's own documentation is careful to say so.

Planned

Marked as planned because it is not built. The product's own site holds the same line.

Planned

Visual understanding

Veyra will read what is on the shared screen and use it when it answers.

Planned

Proactive intelligence

Veyra will offer the question worth asking before you have to think of it.

Planned

Codebase awareness

Veyra will know the project you are describing, not just your notes about it.