anvilwing
v1.5.23
Published
Claude Code–class Ink TUI agent for DeepSeek v4 Pro (max thought, ultracode always on). Live follow-up queue, Shift+Tab permission modes, colored diffs, adversarial verifier — your keys, no login. Independent; inspired by Project Glasswing.
Maintainers
Readme
Anvilwing
A Claude-Code-class terminal coding agent you fully own — running on DeepSeek v4 Pro at a 1M-token context and max thinking, with your own API keys. The same ⏺ / ⎿ transcript shape, permission modes, and colored diffs you know from Claude Code, for a fraction of the price and with no hosted approval-nag or refusal layer in the way.
npm i -g anvilwing
anvilwingWhy Anvilwing
- You own the loop. BYO keys (stored in your OS keychain, or read from
DEEPSEEK_API_KEY/TAVILY_API_KEY). No required login, no hosted middleman deciding what you can run. - Frontier capability, low cost. DeepSeek v4 Pro with a 1,048,576-token window and full reasoning — a month of heavy daily use costs less than a single top-tier subscription.
- Real engineering discipline, built in. An always-on adversarial verifier critiques the model's own answers and risky tool calls before they land.
- Transparency over secrecy. Inspired by Project Glasswing: open design, verifiable behavior, secrets kept in the keychain — never in the source.
Features
Agent loop & tools
- Tool-using agent over a headless event machine: shell, file read/write, edit, glob/grep search, web search.
- Long-running task management — run servers/watchers/builds in the background, then poll output and kill by id (
run_in_background, output retrieval, kill, shutdown-reap). - Auto-verify / auto-fix — error output is parsed into structured findings with suggested fixes; the adversarial verifier gates results.
- Update checks — non-blocking version check with a one-line upgrade hint.
- Timely, informative termination — finishes when the task is actually done and says what it did, verified, and what (if anything) remains.
Terminal UX (Ink)
- Claude-Code transcript shape:
⏺action bullets,⎿nested results, colored diffs, streaming output. - Shift+Tab permission modes and a Ctrl+T toggles menu (auto-continue · confirm-actions/HITL · debug · theme).
- Slash-command palette and @-mention file/dir completion.
- 10 runtime-switchable color themes —
Ctrl+T → Theme: Space Black (default, Apple aesthetic), Twitch Purple, Dracula, Nord, Tokyo Night, Catppuccin Mocha, Gruvbox, Solarized Dark, One Dark, Rosé Pine. Applies live and persists across restarts. - Bracketed-paste handling, reverse-i-search, persistent memory notes.
Models
- DeepSeek v4 Pro (default) at max thinking. (In progress: a
/modelswitcher for v4 Pro ⇄ v4 Flash, both at max thinking.)
Beyond the terminal
Anvilwing's agent loop is headless — createAgentController().send() returns an async event stream with no TTY dependency, so the terminal is just one front-end. That makes the same agent pluggable into many surfaces (status: Shipped today · Partial seam exists · Proposed designed):
| Surface | Status | What it is |
|---|---|---|
| Terminal CLI | Shipped | The Ink TUI you get from npm i -g anvilwing. |
| Headless API & SDK | Partial | Import the controller and drive send(); an HTTP/SSE wrapper for any backend. |
| GitHub App / bot | Proposed | @anvilwing on a PR/issue → ephemeral runner reviews the diff, pushes fixes, opens PRs. |
| GitHub Action | Proposed | A CI step that auto-fixes failing tests, bumps deps, enforces checks. |
| MCP server mode | Proposed | Expose Anvilwing's tools over MCP so other agents call it as a sub-agent. |
| Web coder | Proposed | A browser dashboard that drives a real terminal on your own connected computer — not an isolated cloud sandbox. Your machine does the work; the web just controls it. |
| Mobile & Watch | Partial | An iOS + Apple Watch companion to start, approve, and kill sessions via push. |
| Chat bots / webhooks / IDE | Proposed | Slack/Discord, event-driven automation, and editor extensions over the same loop. |
The single insight behind all of these: it's a different consumer of the same event stream plus a transport — not a re-implementation of the agent.
Architecture & principles
- Headless core (
src/runtime/agentController.ts, contractsrc/contracts/v1/agent.ts) with an Ink front-end (src/headless/interactiveShell.ts). - Central, runtime-switchable theming (
src/ui/colors.ts) — one source of truth; no hardcoded colors anywhere else (enforced by a repo-wide test). - Glasswing-inspired transparency / verification / resilience: every fix ships with a fail-before/pass-after test, tests run against the real artifact (no mocks standing in for the thing under test), and secrets live in the OS keychain via
src/core/secretStore.ts.
Roadmap
Shipped today: the terminal CLI, the headless loop + tools + adversarial verifier, background long-running tasks, update checks, and full color theming. On the way: the /model switcher (v4 Pro ⇄ Flash), optional account login with every session mirrored to the cloud and controllable from web + mobile, the web coder (real-terminal relay), and the GitHub App / Action / MCP-server surfaces above.
License
See LICENSE. Independent project — inspired by, not affiliated with, Project Glasswing.
