See also:
- README.md (docs hub)
- getting-started.md (first run)
- Python: 3.10+
- Tray UI: macOS is the primary target. Other OSes may work through the Qt shell, but are not packaged to the same standard.
- Gateway: an AbstractGateway instance must be available
- Assistant workflow: the gateway's default workflow for
abstractassistant.agent.v1, or the built-inabstractassistant-orchestrator, which the app keeps published in your tenant catalog - AbstractCore: installed as a dependency; the minimum version is set in
pyproject.toml - Providers:
- local: LMStudio / Ollama must be configured on the gateway
- cloud: API keys belong on the gateway side
pip install "abstractassistant"For local microphone capture (voice conversations and dictation), install the voice extra
(the base install covers text chat and gateway-backed media, but not the local audio-input stack):
pip install "abstractassistant[voice]"Other extras:
| Extra | Adds |
|---|---|
voice (alias all) |
local speech-to-text on top of the default audio I/O (abstractvoice[audio-io,stt]) |
avatar |
nothing since 0.18.0: the activity avatar (abstractavatar) is in the base install; kept so older install lines still work |
apple |
the Apple Silicon local stack (abstractcore[all-apple], abstractvoice[all-apple]) |
gpu |
the NVIDIA/CUDA local stack (abstractcore[all-gpu], abstractvoice[all-gpu]) |
macos-app |
PyInstaller, to build the macOS app bundle |
dev |
test and lint tools |
The assistant itself executes nothing locally; the apple and gpu extras are for installs
where the same environment also hosts local models.
Verify:
assistant --helpGateway startup for local development:
export ABSTRACTGATEWAY_FLOWS_DIR="$PWD/abstractgateway/flows/bundles"
export ABSTRACTGATEWAY_AUTH_TOKEN="your-shared-token"
abstractgateway serve --host 127.0.0.1 --port 8080For a real Finder-launchable .app, build the bundled macOS artifact with PyInstaller:
pip install -e ".[macos-app]"
build-macos-appThis builds a self-contained AbstractAssistant.app and installs it into /Applications.
If you are changing the macOS UI from source and want to verify the packaged app, rerun
build-macos-app after your change, quit any older AbstractAssistant menu-bar process, and then
relaunch /Applications/AbstractAssistant.app. Source-run tray behavior and the installed bundle
are not the same validation target.
If you want the bundle without installing it into /Applications, use:
build-macos-app --skip-installThat produces dist/macos/AbstractAssistant.app.
The bundle is unsigned and un-notarized. Building it yourself is fine (locally built
apps carry no quarantine attribute), but a copy you send to someone else will be blocked by
Gatekeeper ("cannot verify developer" / "damaged") until it is signed and notarized: see
macos-signing.md (build-macos-app --sign, --notarize, --dmg). The app is
also menu-bar only (LSUIElement), so it deliberately shows no Dock icon — look for the tray icon
in the top-right menu bar, not the Dock.
You can use the CLI without running the tray UI:
pip install abstractassistant
assistant run --prompt "Hello"The CLI entrypoint is available as both assistant and abstractassistant.
Optional assistant-side overrides:
--gateway-url(on its own, reuses the sign-in saved for that gateway)--gateway-token--stream on|offonassistant run(see api.md)
- Gateway owns workflow discovery and multimodal capability defaults. The assistant does not need provider API keys or local model configuration files.
- AbstractAssistant does not bundle
ffmpeg. If your provider/media pipeline relies onffmpegfor video frame extraction, ensure it is on your PATH.