Documentation

Everything you need to get intellego running and tuned. It's a v1 preview in active development — packaged installers are coming soon; for now you build from source (a few minutes).

Overview

intellego is a desktop assistant that helps you understand what the other person means during live voice and video calls. Each time they finish a turn, it transcribes their audio locally and shows one small comprehension card:

Any facet the model can't provide is left blank rather than guessed. intellego is assistive technology for your own understanding — not for recording or deceiving anyone.

Requirements

Install & build

Packaged release

The first Windows installer is coming soon — watch the Download page. Until then, build from source:

Build from source

  1. Install the prerequisites above (Rust, Node.js, WebView2).
  2. Clone and install frontend dependencies:
    git clone https://github.com/losts1/intellego
    cd intellego
    npm --prefix app install
  3. Build the desktop app:
    cd app
    cargo tauri build
    or run it in development:
    cd app
    cargo tauri dev

The source repo is currently private — access is required until the first public release.

Enabling real speech-to-text and a real LLM

The default build uses a mock transcriber and mock LLM so it runs offline with no heavy dependencies. Turn on the real integrations with cargo features:

cargo tauri dev --features "real-stt,real-llm"

Configuration

Copy config.example.toml to config.toml and edit it. config.toml is never committed — it can hold an API key.

[provider]
preset = "llm-router"   # llm-router | ollama | openai | grok
model  = "qwen3.6"
api_key = ""            # required for cloud presets only
# base_url = "http://192.0.2.10:4000/v1"   # optional override

[comprehension]
turn_gap_s = 1.5           # silence (seconds) that closes the other person's turn
context_pairs = 4          # how many recent turns to feed as context
include_suggestions = true # show optional reply suggestions
max_tokens = 300           # cap on the model's card response
# role_hint = "1:1 with my manager"   # optional, tailors the decode
SettingDefaultWhat it does
provider.presetllm-routerWhich LLM backend to use (see Providers).
provider.modelModel id as the provider expects it.
provider.api_key""Required for cloud presets; leave empty for local.
provider.base_urlpreset defaultOverride the preset's endpoint (e.g. a remote llm-router).
comprehension.turn_gap_s1.5Silence gap that ends the other person's turn.
comprehension.context_pairs4Recent turns included as context for each card.
comprehension.include_suggestionstrueWhether cards include optional reply suggestions.
comprehension.max_tokens300Cap on the model's response length.
comprehension.role_hintOptional hint about your role/relationship to tailor decoding.

With the real-llm feature, provider settings can also come from the environment: INTELLEGO_LLM_PRESET, INTELLEGO_LLM_MODEL, INTELLEGO_LLM_API_KEY, INTELLEGO_LLM_BASE_URL, INTELLEGO_LLM_TIMEOUT_MS.

Providers

The language model is configurable and local-first by default. All four presets speak the OpenAI-compatible chat API — only the endpoint, model, and key differ. Speech-to-text is always local.

PresetLocalityDefault endpointAPI key
llm-router (default)Localhttp://localhost:4000/v1No
ollamaLocalhttp://localhost:11434/v1No
openaiCloudhttps://api.openai.com/v1Yes
grokCloudhttps://api.x.ai/v1Yes

Cloud presets won't start without a non-empty api_key. Local presets need no key. Use base_url to point a local preset at a remote endpoint.

Privacy

How it works

The other party's call audio flows through a small, layered pipeline:

call audio (system loopback)
  → downmix + resample to 16 kHz
  → voice-activity detection (Silero) + utterance chunking
  → transcription (whisper.cpp)
  → turn assembly (closed on a silence gap)
  → language model → comprehension card
  → shown in the app

A turn closes when a configurable silence gap (default 1.5 s) follows the speech. Card generation runs on a bounded worker, so a slow model never stalls the pipeline — under sustained load the oldest pending turn is dropped and the most recent is always kept.

Troubleshooting

No card appears

Check that call audio is actually reaching your device's system output, and that your configured provider is running (for local presets, that the endpoint in the Providers table is reachable). With a mock build, cards come from bundled sample audio, not your live call.

"Model not found" / STT errors

The real-stt build needs ggml-base.en.bin and silero_vad.onnx in intellego-audio/models/ (or INTELLEGO_MODELS_DIR). A missing model reports a session error.

Authentication failed

Cloud presets (openai, grok) require a valid api_key. Local presets should have an empty key.

Cards are blank or partial

intellego leaves a facet blank when the model doesn't return it — this is expected. If every card is blank, the model may not be following the JSON format; try a different model or a provider that supports JSON responses.