Skip to main content

Anvil — a local TUI for any coding agent (Claude Code, Codex, …) with projects, conversations, and cross-conversation memory.

Project description

Anvil

A local TUI for any coding agent — Claude Code, OpenAI Codex, and whatever comes next. Anvil gives you projects, persistent conversations, file editing, and cross-conversation memory in one keyboard-driven terminal app.

┌──────────────────────┬──────────────────────────────────┐
│ PROJECTS             │  [chat 1][chat 2][+]  (tabs)     │
│  • my-website        ├──────────────────────────────────┤
│  • side-project      │  user: ...                       │
│                      │  assistant: ...                  │
│ FILES                │  🔧 Read foo.py                  │
│  └ src/              │                                  │
│                      │                                  │
│ CONVERSATIONS        │                                  │
│  ● first pass        ├──────────────────────────────────┤
│    bug fix           │  > type message…  📎 Paste       │
└──────────────────────┴──────────────────────────────────┘

Why Anvil?

If you use Claude Code or Codex from the CLI, you already know the pain: each conversation lives in its own terminal window, scrollback is fragile, attaching images is awkward, and switching between projects means a tangle of tabs. Anvil keeps the same agents — same auth, same models — but adds the things a full app gives you:

  • Multiple projects with their own conversation history and memory.
  • Tabs for parallel conversations in the same project.
  • A file tree + in-app editor for small reads/edits without leaving the app.
  • Mac-native shortcuts (Cmd+C, Cmd+W, Cmd+,) via a custom Terminal profile.
  • Agent-agnostic engine layer — point a project at Claude Code today, Codex tomorrow, or both side-by-side.

Anvil is a wrapper, not a replacement. It uses your existing Claude Code OAuth or Codex API key — Anvil never sees your tokens.

Install

Homebrew (recommended for Mac):

brew tap sagar-1199/anvil
brew install --cask anvil

This installs the anvil CLI and copies Anvil.app to /Applications. Launch from Spotlight or the Applications folder.

Pipx (Mac + Linux):

pipx install anvil-harness
anvil

You'll also need at least one agent CLI installed (see below).

Agent setup

Anvil shows a one-time setup wizard on first launch that walks you through this, but for reference:

Agent Install Auth
Claude Code npm install -g @anthropic-ai/claude-code claude (OAuth flow)
Codex CLI npm install -g @openai/codex codex login or set OPENAI_API_KEY
Mock (built in) none — offline echo

Anvil never sends your credentials anywhere. It calls your local agent CLI directly; auth lives wherever those CLIs put it (~/.claude/, ~/.codex/).

Configuration

Two layers, both edited from the in-app Settings screen (Ctrl+, or Cmd+,):

  • ~/.anvil/config.toml — global defaults (agent, model, telemetry opt-in).
  • <project>/.harness/config.toml — per-project overrides (only fields that differ from global).

You should never need to hand-edit these. The Settings screen is the canonical UI; the files exist so power users can sync them via dotfiles.

Keyboard

Shortcut Action
Ctrl+N New chat
Ctrl+O Open project
Ctrl+, Settings
Ctrl+Shift+M Switch agent for current chat
Ctrl+Shift+I Attach image
Ctrl+Shift+V Smart paste (text or image)
Ctrl+Shift+W Close tab
Ctrl+S Save file (in editor tab)

Mac users with the bundled Terminal profile installed get the Cmd+ versions of these as well (Cmd+W, Cmd+C, Cmd+,).

Contributing

Want to add support for a new agent (Gemini, Cursor Agent, aider, …)? See CONTRIBUTING.md. The agent interface is three methods and one registration line.

Development

git clone https://github.com/sagar-1199/anvil-harness
cd anvil-harness
uv sync
uv run anvil

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anvil_harness-0.1.1.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anvil_harness-0.1.1-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

Details for the file anvil_harness-0.1.1.tar.gz.

File metadata

  • Download URL: anvil_harness-0.1.1.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for anvil_harness-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b47ea8c9f6e1df93485e40cb0438482dc17800d40a8a4193003efbc59bb2304a
MD5 8e5a3cd21466dc5cec15f97906ac425a
BLAKE2b-256 862cfd4b4db7e55e014bb375ae78ea4dc2a40ff2192780b915e682df6effe7f9

See more details on using hashes here.

File details

Details for the file anvil_harness-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: anvil_harness-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for anvil_harness-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 45a747f21486c6fe9dfad19d68a631165eb1272f97e93fb96ad12c0de9204e19
MD5 ba59effd0792086de8a0fdb371eca740
BLAKE2b-256 06e8c236ddb597ad3d94880fb083e56fbb5011f86b2532805828071c2e99ce67

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page