AI Leash
A desktop agentic harness — the editor, file tree, and terminal exist to support agent work, not the other way around. No telemetry: run an agent, inspect its work, and keep it under your control. Tool calls, permission prompts before destructive operations, and sub-agents make the process visible, whether you use the built-in runtime or connect an external ACP agent.
Built on Tauri, so the app itself is a small native binary with a Rust backend, not a bundled Chromium.
Table of contents
Features
Agent chat
The center pane is a chat with a real agent loop behind it: tool calls, streaming responses, retry/regenerate, and per-turn token usage against the model’s context window. Choose a configured model or external agent from the dropdown.
Tool calls (file reads/edits, shell commands) show up inline, collapsed
by default with the raw args one click away, and destructive ones
(shell, file edits) stop and ask before doing anything.
The built-in runtime supports multiple model providers, and the Agent Client Protocol backend can drive external agents such as Claude Code and GitHub Copilot CLI.
Sub-agents
The agent can delegate independent chunks of a task to isolated sub-agents — each gets a clean context and its own tool loop, and several can run at once when the work actually splits that way. They show up as nested threads under the tool call that spawned them, or as their own tab if you want to watch one directly.
AGENTS.md, memory & skills
Drop an AGENTS.md in your project root and it’s folded into the
system prompt on every turn — edit it mid-session and the next message
picks up the change, no restart. Same for a global one that applies
across every project. Subdirectory-scoped AGENTS.md files kick in
automatically once the agent actually touches something in that folder.
Skills are single markdown files the model can load on demand by name (only offered as a tool at all if the project actually has any), and a plain-text memory file gives the agent durable notes across sessions — both scoped the same way, project and global.
Editor & file tree
CodeMirror 6 with syntax highlighting for the common languages, a lazy file tree that only fetches a directory’s contents when you expand it, and every filesystem operation — editor and agent tools alike — checked against the project root so nothing can read or write outside it.
Terminal
A real interactive terminal (xterm.js + a PTY on the backend), not a
sandboxed command box. Open more than one, they persist in the
background when you switch tabs. Separate from the agent’s own shell
tool, which is a one-shot command runner with its own 30s timeout and
output cap.
Everything else
- Conversation history persisted to SQLite, restored on reopen.
- A left-sidebar project switcher — recent projects sorted by last activity, with a live indicator when one’s generating in the background.
- Resizable panels throughout, markdown rendering for assistant messages, and a filesystem watcher that keeps the file tree in sync with changes made outside the app.
See docs/features for the actual implementation detail behind all of the above — it’s a running build log kept in sync with the code, not marketing copy.
Install
Every push to master builds and publishes fresh packages via
GitHub Actions — grab the latest one
from the Releases page .
Linux
Debian/Ubuntu
Download the .deb package from the
Releases page
and install it:
sudo apt install ./ai-leash_*.debArch
Grab the .tar.gz archive from the Releases page and install it:
tar xf ai-leash_*.tar.gz
cd ai-leash-bin
makepkg -siFedora?
macOS
Download the .dmg from the Releases page page, open it, and drag AI Leash into Applications.
It’s not notarized, so the first launch needs a right-click → Open (or
xattr -d com.apple.quarantine /Applications/AI Leash.app if Gatekeeper
still blocks it) instead of a normal double-click.
Building from source
You’ll need Rust and Node 20+.
git clone https://github.com/patheticGeek/ai-leash.git
cd ai-leash
npm install
# dev, with hot reload
npm run tauri dev
# a real installer/bundle for your current platform
npm run tauri buildTo build the Debian package explicitly:
npx tauri build --bundles debOn Linux you’ll also need the system packages Tauri itself needs —
libwebkit2gtk-4.1-dev, libayatana-appindicator3-dev, librsvg2-dev,
libxdo-dev, plus the usual build toolchain. See the
build workflow for the exact apt
line used in CI.
Project layout
src-tauri/src/ Rust backend — agent loop, tools + permission gating,
PTYs, SQLite history
src/ React frontend — chat, editor, terminal, file tree
docs/features/ Per-feature reference docs, kept current with the codeStatus
Under active development, breaking changes land on master regularly.
Not published to any package registry — build it yourself or grab a CI
build from Releases.