A local, privacy-first, English-only voice assistant.
Project description
Jack is a privacy-first voice & chat assistant for macOS. You talk to a floating orb (or type in a chat drawer); it listens, understands, and acts on your Mac — open apps and websites, find and open files, check battery/Wi-Fi/disk, remember things about you, empty the Trash. Everything runs locally: no audio, text, or memory leaves your machine, with two clearly-marked, opt-in exceptions (web search and an optional cloud LLM). English only.
Highlights
- Chat or voice — type in the chat drawer (the default), or enable voice and say “jack, …” for hands-free (push-to-talk also supported).
- Acts through a permission gate — read-only tools run straight through, destructive ones ask first, and every action is audited. The model plans; the gate executes — it never runs a tool blindly.
- Hands on your Mac — app & web control, on-device file search (open / reveal in Finder), system info, and local memory.
- Local by default, cloud optional — runs fully on-device with Ollama, or switch to Claude (disclosed, opt-in).
→ Full feature tour, the orb's states, and how it works: jack's website.
Quickstart
Download (recommended): grab the latest .dmg from
Releases — a single, self-contained
app. It's an unsigned dev preview, so the first launch is right-click Jack →
Open. Voice models download on demand the first time you enable voice.
Build from source (macOS, Apple Silicon):
brew install uv ollama
ollama serve && ollama pull qwen3:8b # local LLM, one time
make setup # dev env + git hooks
make run # the engine/daemon
Then build the orb from ui/orb-shell (cargo tauri dev). Full setup, configuration,
permissions, and troubleshooting live in Getting started.
Install the coding CLI
No Python needed — one command downloads a self-contained jack binary.
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/mdjakkariya/jacky/main/install.sh | sh
Windows (PowerShell)
irm https://raw.githubusercontent.com/mdjakkariya/jacky/main/install.ps1 | iex
Then run jack inside a project. You'll need an LLM backend: set a cloud key with
jack config (Anthropic/OpenAI — you pay the provider), or install
Ollama and pull a model to run fully local.
Update: jack checks once a day and prints a notice when a new version ships —
run jack update to upgrade in place. jack --version shows the current version.
Architecture
A headless Python engine + a macOS orb / chat client (Tauri) that talks to it over a localhost WebSocket. A pipeline of swappable stages drives one turn:
AudioSource ─▶ SpeechToText ─▶ LanguageModel ─plan─▶ PermissionGate ─▶ ToolRegistry
wake+VAD/PTT whisper Ollama / Claude risk·confirm·audit apps·web·files·system
│
TextToSpeech (Piper) ◀──────── reply ◀──────────────┘
Diagram: docs/architecture/architecture.svg.
Engineering conventions and the full design rationale are in CLAUDE.md.
Star history
Contributing
Contributions are welcome — see CONTRIBUTING.md for the workflow
(open an issue first, make check, Conventional Commits, DCO sign-off) and
CODE_OF_CONDUCT.md.
Sponsor
Jack is built in my free time. If it's useful to you, sponsoring helps me keep going via GitHub Sponsors — or buy me a chai:
License
Created and maintained by Mohamed Jakkariya
(@mdjakkariya). Licensed under Apache-2.0 — see
LICENSE and NOTICE. You're free to use, modify, and build on
Jack; please keep the attribution.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jacky-0.9.0.tar.gz.
File metadata
- Download URL: jacky-0.9.0.tar.gz
- Upload date:
- Size: 2.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
003194beff93b14a5e6e8c8e0ae06baec2c4ef4ba595602a3d7f8cc5e6cec688
|
|
| MD5 |
41c2e192a5228a232ebb9d41974d5a01
|
|
| BLAKE2b-256 |
8db9d28d85e336d0b870946ea0ef825323668c5858c86c5312959a9abb96a6bd
|
Provenance
The following attestation bundles were made for jacky-0.9.0.tar.gz:
Publisher:
release.yml on mdjakkariya/jacky
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jacky-0.9.0.tar.gz -
Subject digest:
003194beff93b14a5e6e8c8e0ae06baec2c4ef4ba595602a3d7f8cc5e6cec688 - Sigstore transparency entry: 2207221211
- Sigstore integration time:
-
Permalink:
mdjakkariya/jacky@c86edf2fa9fdc4df66cf7ec7aee61cacfa2adba0 -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/mdjakkariya
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c86edf2fa9fdc4df66cf7ec7aee61cacfa2adba0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file jacky-0.9.0-py3-none-any.whl.
File metadata
- Download URL: jacky-0.9.0-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18d48af8e0b7291492b0aae95e15ead9238ccf0444acd512fce9f0fe1c0e1d62
|
|
| MD5 |
51dd9265936cd3cfc8515400fdd09e2f
|
|
| BLAKE2b-256 |
29bd9ee7964c975e8b9046e98276495146bfd89bcaab1678a4429c1fc2b9b9a3
|
Provenance
The following attestation bundles were made for jacky-0.9.0-py3-none-any.whl:
Publisher:
release.yml on mdjakkariya/jacky
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jacky-0.9.0-py3-none-any.whl -
Subject digest:
18d48af8e0b7291492b0aae95e15ead9238ccf0444acd512fce9f0fe1c0e1d62 - Sigstore transparency entry: 2207221240
- Sigstore integration time:
-
Permalink:
mdjakkariya/jacky@c86edf2fa9fdc4df66cf7ec7aee61cacfa2adba0 -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/mdjakkariya
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c86edf2fa9fdc4df66cf7ec7aee61cacfa2adba0 -
Trigger Event:
push
-
Statement type: