Sinew is a desktop AI coding harness you can actually reshape.
Rewrite the description of every tool, turn the ones you don't need off,
and the assistant only sees what you keep.
tauri 2 · react · rust · monaco · xterm · mcp
Most AI coding tools ship a fixed harness: a hard-coded prompt, a hard-coded set of tools, a hard-coded loop. You get whatever the vendor decided is "right".
Sinew flips that. The harness is the surface area you control.
- Every tool description is editable. Rephrase it, scope it down, change the contract.
- Every tool is toggleable. Run minimal like Pi, or unlock the full set.
- Every provider is pluggable. Same agent loop across Anthropic, OpenAI, Google, Kimi, OpenRouter.
- Agents can run in swarms. Multiple sub-agents, one shared task board, message passing.
- It's a real IDE. Monaco editor and xterm terminal, not a chat box with a file picker.
The same agent loop can behave like a barebones pair-programmer or a full autonomous coding crew. You choose. Tool descriptions live in settings, versioned with your config, and the assistant gets exactly the surface area you decide on.
Minimal → read · patch · bash
Search-capable → + grep · glob
Web-aware → + WebSearch · WebFetch
Full → + image · mcp · todo · question · skill · subagent · team
No magic. No hidden tools. No prompt you can't see.
Launch a team of sub-agents from a single prompt. Each agent gets its own
context, its own role, its own tool subset. They coordinate through a shared
task board and SendMessage. The main agent stays in the loop, can watch the
board update live, stop any teammate, or hand work off.
- Roles. Architect, frontend, backend, tester — or whatever you define.
- Task board. Real dependencies, real ownership, real status.
- Messaging. Direct (
@name) or broadcast (*). - Live view. Streamed into the chat as cards, not buried in logs.
OAuth where possible, API keys where it makes sense. Switch provider mid-project without changing your tools, your prompt, or your workflow.
| Tool | Purpose |
|---|---|
read |
Read text files or attach images visually |
apply_patch |
Create, update, delete, rename files via a strict patch format |
grep |
Workspace-wide text / regex search |
Glob |
Find files by glob pattern |
bash |
Run shell commands in a managed session |
WebSearch / WebFetch |
Hit the web, read the page |
CreateImage |
Generate images (OpenAI Image, Nano Banana) |
ToDoList |
Maintain a structured task list across turns |
Question |
Ask the user single / multiple-choice questions |
mcp |
Bind any Model Context Protocol server as tools |
LoadMcpTool |
Lazy-load MCP tools on demand |
Skill |
Long-form, on-disk skills the agent can invoke |
subagent_* |
Delegate to a configured sub-agent |
TeamRun / TeamStatus / TeamStop |
Drive the agent swarm |
All of them are listed in Settings, every description is a textarea, every row has an on/off toggle.
src/— React UI (Monaco, xterm, chat, settings, file tree).src-tauri/— Tauri 2 shell, IPC commands, workspace I/O, conversation store.crates/sinew-core— Provider-agnostic types: messages, tools, streams.crates/sinew-app— Agent loop, tool implementations, swarm, MCP, compaction.crates/sinew-{anthropic,openai,google,kimi,openrouter}— Provider adapters (auth, wire, streaming).
| Sinew | Cursor | Claude Code | Aider | Zed AI | |
|---|---|---|---|---|---|
| Native desktop app | ✓ | ✓ | — (CLI) | — (CLI) | ✓ |
| Open source | ✓ | — | — | ✓ | ✓ |
| Multi-provider | ✓ | ✓ | — | ✓ | ✓ |
| Editable tool descriptions | ✓ | — | — | — | — |
| Toggle individual tools | ✓ | partial | — | — | — |
| Agent swarm + task board | ✓ | — | — | — | — |
| MCP servers | ✓ | ✓ | ✓ | — | partial |
| Embedded terminal | ✓ | ✓ | n/a | n/a | ✓ |
Grab the latest build for your OS from the releases page.
- macOS —
.dmg - Windows —
.msi/.exe - Linux —
.AppImage/.deb
The app self-updates from GitHub releases.
# requires Rust 1.80+ and Node 20+
# see https://tauri.app/start/prerequisites/ for platform deps
npm install
npm run tauri dev # development
npm run tauri build # release bundleThe repo is a Cargo workspace (crates/* + src-tauri/) plus a Vite + React
frontend (src/).
Provider OAuth client IDs (and Google's client secret) are embedded in the
source. This follows the standard practice for "installed applications" — the
same approach used by tools like gcloud. These credentials are not treated
as secret in this context.
- Discord — chat, support, share your harness configs
- Issues — bugs and feature requests
- Discussions — design, providers, MCP
Built with Tauri, Rust, and a stubborn refusal to ship a black-box harness.




