浪人 · a masterless samurai
Your agents. Your machine. No master but you.
Gallery · Why Ronin · Run it · Docs
Ronin is a lean desktop harness for coding agents — rebuilt UI, thinner surface, same sharp forge.
Drive the CLIs you already pay for (Codex, Claude Code, Cursor, Grok Build, OpenCode, Antigravity, Droid, Kilo, Pi) from a dark-first Electron shell: chat, terminal, preview, git, usage, and settings. Bring your own subscription. Nothing is sold here.
And you are not married to the agent you started with — hand a live thread to a different provider mid-conversation and it picks up where the last one left off. How it works ↓
This tree is a fork of T3 Code — event-sourced server, multi-provider adapters, remote-ready websockets — re-cut and re-skinned for a masterless desktop.
Workspace — centered composer, resizable sidebar, project-aware threads, source control in the title bar.
Appearance — system / light / dark, first-party themes (Tsukimi, Aizome, Urushi, OLED Void…), typography you can tune.
Usage — spend and tokens by provider and model, with a one-click path back to the editor.
T3 Code is an excellent open product with a wide surface. Ronin is that product after a deliberate cut — and a full UI pass.
| T3 Code | Ronin | |
|---|---|---|
| UI | Classic T3 shell | New workspace chrome — slim sidebar, hairline topbar, calmer density |
| Identity | Broad agent control surface | Desktop-first fork with a sharper edge |
| Product surface | Desktop + local web + cloud/Connect + mobile/marketing | Desktop + local server/renderer only |
| Windows / WSL | Dual backend, WSL distro orchestration | Native backends only — no WSL |
| Preview | Element pick, PiP, Playwright automation | Tabs, navigate, screenshot, recording |
| Sidebar | Legacy tree toggle + modern cards | One modern sidebar — no legacy tree |
| Assistant output | Optional token-by-token streaming | Buffered only — cleaner read path |
| Provider binding | Fixed once a thread starts | Switchable mid-thread — the conversation is carried over |
| Themes | Managed palettes | Managed + deep OLED (Void, Azure, Phosphor, Plasma…) + Ronin brand theme |
| Git | Full source control | Kept — checkpoints, diffs, branches, PR flows |
| Packaging | Multi-platform + WSL prebuilds | Linux-first, Mac supported; artifacts named Ronin |
| Philosophy | Feature-rich open default | Measure twice, cut once |
- Workspace shell — resizable left rail, floating collapse control, single topbar strip for chat / settings / usage
- Composer-first empty state — “What should we build in …?” with provider, effort, and plan controls in one card
- Git in the chrome — Open / Commit (and related actions) live in the workspace topbar, not buried
- Settings as a place — Appearance, providers, source control, connections in a dedicated nav (not a grab bag)
- Usage as a first-class page — charts, model breakdown, Back to editor
- T3 Connect / hosted relay — no cloud pairing product, no Clerk-shaped hosted path
- Mobile app & marketing site — not in this repo
- WSL as a second OS — no
wsl.exeorchestrator, distro picker, or dual Windows+Linux backend - Playwright preview fat — no element pick, no PiP window, no injected automation runtime
- Legacy sidebar — original per-project tree UI and its settings toggle
- Legacy token streaming — token-by-token paint path removed; assistants buffer cleanly
- Packaging ballast — WSL node-pty prebuild job, dual-OS Windows stage deps for WSL
- Git features — checkpoints, restore, diffs, worktrees, source control UI, PRs
- Multi-provider agents — Codex · Claude · Cursor · Grok · OpenCode · Antigravity · Droid · Kilo · Pi
- Remote-ready architecture — local, LAN, Tailscale / SSH
- Performance posture — no continuous GPU-burning chrome; careful websocket + render cost
- Open source — forkable, inspectable, yours
Ronin is not “T3 Code but worse.” It is T3 Code with the masterless cut: fewer doors, same forge, new face.
┌─────────────────────────────────────────────────────────┐
│ Ronin (Electron) │
│ ┌──────────┐ ┌────────────────────────────────────┐ │
│ │ Sidebar │ │ Workspace topbar · git · panels │ │
│ │ Threads │ │ Chat · composer · terminal │ │
│ │ PRs · │ │ Usage · Settings · OLED themes │ │
│ │ Usage │ └──────────────────▲─────────────────┘ │
│ └────┬─────┘ │ │
│ │ typed WS / IPC │ │
│ ┌────▼───────────────────────────┴─────────────────┐ │
│ │ Server · event-sourced · provider adapters │ │
│ │ checkpoints · reactors · receipts │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
- Desktop app — primary surface (Electron embeds the web renderer)
- Local server — Node backend on your machine
- Your providers — if the CLI works in a terminal, Ronin can drive it
- Source control — first-class git, not an afterthought
- Provider switching — hand a live thread from one agent to another; it resumes its own session, or reads a brief of the conversation and the files changed so far (docs)
- Agent skills — reusable
SKILL.mdworkflows, including a portable~/.ronin/skillsfolder that works on every provider (docs) - Slash commands —
/clear,/compact,/model,/review,/fork,/statusand friends, alongside your provider's own commands (docs)
Every other harness binds a thread to the agent that opened it. Ronin does not. Pick another provider in the composer, confirm, and the next message goes to the new agent — same thread, same history, same checkpoints.
- Been here before? It resumes its own session and only catches up on what it missed while it was away.
- New to the thread? It starts fresh and reads a brief built from the thread itself — the conversation, the working directory and branch, and the files changed so far.
The transcript marks the handover, so you always know who wrote what. Switching back later resumes the earlier agent rather than re-briefing it; each provider keeps its own place in the thread.
Ronin asks before a handover: the incoming agent writes code its own way, so later edits can drift from the approach already in your files.
Full details: docs/user/switching-providers.md.
Important
Install and authenticate at least one provider first:
| Provider | Install | Auth |
|---|---|---|
| Codex | Codex CLI | codex login |
| Claude | Claude Code | claude auth login |
| Cursor | Cursor CLI | agent login |
| Grok Build | Grok Build CLI | grok login |
| OpenCode | OpenCode | opencode auth login |
| Antigravity | Antigravity CLI (agy) |
sign in via agy |
| Droid | Factory Droid | droid / FACTORY_API_KEY |
| Kilo | Kilo CLI | kilo auth |
| Pi | Pi | pi |
# Node 22.16+ / 23.11+ / 24.10+
curl -fsSL https://vite.plus | bash # install vp (macOS/Linux)
vp i
vp run dev # server + web
# or
vp run dev:desktop # Electron shellPorts are worktree-stable; read the [dev-runner] line for the real URL. Pairing needs the full URL including the token.
vp run build:desktop
vp run dist:desktop:linux # primary path
vp run dist:desktop:dmg:arm64 # macOSArtifacts ship as Ronin-${version}-${arch}.${ext}.
Dark-first by default. Built-ins include Ronin, Paper, Graphite, Obsidian, Carbon, and pure-black OLED Void (plus Azure / Phosphor / Plasma siblings). Import or create your own. On Wayland+Vulkan, desktop softens glass so backdrop blur does not fall over.
| Audience | Start here |
|---|---|
| Using Ronin | docs/user/install.md |
| Keybindings | docs/user/keybindings.md |
| Switching provider | docs/user/switching-providers.md |
| Agent skills | docs/user/agent-skills.md |
| Slash commands | docs/user/slash-commands.md |
| Source control | docs/user/source-control.md |
| Remote / Tailscale | docs/user/remote-access.md |
| Architecture | docs/internals/overview.md |
| Glossary | docs/internals/glossary.md |
Full tree: docs/.
Early. Expect bugs. Prefer small fixes over grand PRs unless we ask.
Read CONTRIBUTING.md before opening an issue or PR.
Ronin stands on T3 Code by Theo and the T3 tools team.
Some later product surfaces — portable Agent skills, composer slash commands, and the extra providers Antigravity, Droid, Kilo, and Pi — were adapted from Synara by Emanuele. We kept Ronin’s existing Codex / Claude / Cursor / Grok / OpenCode adapters and its event-sourced core; Synara was the reference for how those extra tools should feel.
upstream → pingdotgg/t3code
reference → Emanuele-web04/synara
this fork → 0veek/Ronin
Screenshots live in Screenshots/ (Code.png, Themes.png, Usage.png).
浪人 — cut free. Keep the blade sharp.


