read, write, edit, shell
Four coding tools, and nothing else to learn. Python runs through the shell rather than a fifth tool, so the surface stays small on purpose.
A small Rust engine with a local CLI, a thin Telegram adapter, and four coding tools — read, write, edit, shell. DuckDB keeps the canonical history, memory is explicit, and compaction is bounded. Python runs through the shell, not a fifth tool.
The published artifact is a Homebrew binary for Apple Silicon. The source repository is not published yet.
brew install open-assistants-lab/homebrew-coding/etti
etti --help
etti doctor # offline, effect-free: reports presence, never valuescurl -fsSL https://openassistants.org/install.sh | shFour coding tools, and nothing else to learn. Python runs through the shell rather than a fifth tool, so the surface stays small on purpose.
Facts are written down deliberately, not inferred behind your back. What is remembered is a decision you can read.
History is compacted on a frozen policy: a fixed reserve, an approximate recent window, and a strict trigger. History is never silently trimmed.
Canonical history lives in DuckDB. One runtime owns the live store and coordinates one active run; adapters never talk to the database directly.
Every run keeps a paired receipt and an intent-before-effect journal. Uncertain effects are reported as uncertain — never replayed as if they worked.
The CLI and the Telegram adapter are thin views over one engine. Neither runs its own model loop.
Point it at a local model or a cloud provider. `etti setup` asks for consent before it stores a key, and stores it in the login Keychain — offline, and never read back to you.
One workspace, one state directory. The first workspace that creates a store owns it; a different workspace is refused rather than silently rebound.
`/status`, `/history`, `/cancel` and `/resume` show what actually happened. An uncertain effect stays uncertain until you look at it.
Ordinary tests are offline and isolated. Live-provider, Linux and telemetry release gates remain open — this is the state of the work, not a readiness claim.
The published v0.1.1 binary was verified for its public download digest, payload allowlist, signed-binary identity and offline help/doctor — but not for a host install or upgrade, and not with a clean minimum-OS Mac. The rest of the stack this site used to describe isarchived.
The models index, the release notes, and the published install.
Every free-tier provider and discounted model in one filterable table, synced hourly from OpenRouter, Vercel AI Gateway and TokenRouter.
What shipped in each release, what it cost, and which checks are still outstanding.
The published v0.1.1 formula and archive — the install path this site points at.
brew install open-assistants-lab/homebrew-coding/etti
etti --help
etti doctor # offline, effect-free: reports presence, never values
# or one line:
curl -fsSL https://openassistants.org/install.sh | sh
etti chat --local --workspace /path/to/project --state-dir /path/to/project-state \
--provider ollama-cloud --model deepseek-v4.1-flash --context-window 131072macOS 14+ on Apple Silicon. Cloud coding needs an Ollama account and internet, and can incur charges. Tools share your OS user. Upgrades may need Keychain reauthorization; uninstalling does not delete your keys or conversation stores.