weft

Agents, weft to their own devices.

weft is a desktop environment for Claude Code, Codex and opencode. Run them side by side in isolated worktrees, see at a glance which one is waiting on you, and hand them context straight from GitHub and Linear.

v0.0.1 · macOS 12+ · Windows and Linux in preview

weft at a glance.

Not an IDE.

Keep your editor. weft is the desk around it — the part of the job that begins once agents are the ones writing the code.

Stays in your editor

Writing code · Reading code · Debugging

Agent Dashboard111
Repositories
api
mainDefault
fix/resume-race
Fix the resume race
Add the regression test
chore/migrate-db
Move the store to the new schema1 awaiting reply

Know who needs you.

Every worktree lists its agents and their state. Red is someone waiting on your answer.

Run & verifyHand offFeedback
PrepareRunTestOpen preview
Succeededpnpm test session:5173
 ✓ src/session/resume.test.ts (14)
 ✓ src/session/store.test.ts (28)

 Test Files  2 passed (2)
      Tests  42 passed (42)

Run it before you trust it.

Prepare, run and test a worktree with your own commands, then open the preview on its assigned port.

Run & verifyHand offFeedback

Editable handoff brief

# Work handoff
Worktree: ~/weft/api-resume-race

## Goal / next instruction
Cover the timeout path and re-run the suite.

## Changed files
M src/session/resume.ts
A src/session/resume.test.ts

## Open review feedback
resume.ts (new:43) Cover the timeout path too.

## Latest local command
test: succeeded
CodexOpen a new agent with this brief

Hand the work on.

Turn the conversation, the changed files and the open feedback into a brief, and continue with another agent.

Every agent on one desk. You always know who needs you.

Tile Claude Code, Codex and opencode sessions in one workspace. Each gets its own git worktree, so parallel work never collides — and every question or permission prompt is routed to one place.

  • Up to 16 panes per workspace, one worktree per agent
  • Questions and permissions surface the moment an agent blocks
  • A review gate between the agent’s branch and yours
  • Sessions survive restarts and resume where they stopped
Running2
claude
fix/resume-race
Editing resume.ts
codex
feat/linear-sync
pnpm typecheck
Needs you1
claude
chore/migrate-db
Run pnpm db:migrate?
AllowDeny
Review1
opencode
docs/readme
+60 −8 · 2 files
GitHubLinearJiraConfluenceSlackNotionsoon

Context goes in without the copy-paste.

Browse GitHub and Linear inside weft, then drag an issue onto a prompt. The agent gets the title, the body and the thread. You never leave the window.

  • GitHub through your existing gh login — no new tokens
  • Linear issues inline, next to the agent that needs them
  • Automations: scheduled prompts that run while you’re away
  • Jira and Confluence too — Slack and Notion are on the way
Sourcesopen
#482Resume loses the last tool call
WEF-131Paginate Linear issue browse
WEB-57Permission prompt steals focus
#471Worktree cleanup on merged branches
#482Resume loses the last tool call
#482 issue · 7 comments

Fix this. Follow the repro in the issue and add a regression test.

claudeplan

Let a teammate look over your shoulder.

Pair another weft with yours and they see your space live — the panes, the terminals, git status, the file tree. Local-first by design.

  • A live mirror of your workspace layout and terminals
  • Sidebars follow the origin: git, files, agents, issues
  • A viewer’s edits are serialized safely on the origin
origin · your Mac
viewer · teammateLIVE

The agents don’t have to run on your laptop.

Open a pane on a remote host and start your CLI there. The file tree, the editor and git follow over the same SSH connection.

New pane
Manage
Claude1
Codex2
Gemini3
OpenCode4
Terminal5
Browser6
Remote (SSH)
dev-box
gpu-runnerconfig
staging-bastionconfig

It’s just your ssh.

weft connects with the system ssh binary, so whatever already works in your terminal works here. Nothing to install on the server.

  • Hosts in ~/.ssh/config show up on their own
  • Keys, agent, ProxyJump, smartcards — all left to ssh
  • weft stores no passwords and no keys
  • Files, editor and git over the same connection

Saved in weft

Add host
dev-boxdev@10.0.4.12:22 · ~/weft/api
Build farmci@build.weft.dev:2222 · /srv/weft

From your SSH config

Read from ~/.ssh/config. Edit them in the file.

gpu-runnerconfig
staging-bastionconfig

Pick up your other machine.

Pair two wefts with a link. The second one opens the first one’s workspace — its panes, terminals, git and files — and what you change there syncs back.

  • A direct connection between your machines — no relay, no account
  • Listens on the address you pick, such as Tailscale — never on every interface
  • A link is shown once, and you can revoke it any time
  • Reconnects on its own; edits made offline sync when it’s back

Let other devices connect here

Accept connectionsListening on 100.84.12.7:7421
Listen onTailscale — 100.84.12.7
Laptopweft://pair/eyJob3N0IjoiMTAwLjg0LjEyLjci…Copy

Copy it now — for safety the full link is shown only this once.

Connect to another device

Studio Mac100.84.12.7:7421Connected
Office tower100.91.3.40:7421Unreachable

Bring the agents you already use.

weft drives the official CLIs installed on your machine, with the logins you already have. No proxy in between, no extra API keys.

  • A new pane asks one thing: which agent. Press 1–4.
  • Starts on your default login — ~/.claude, ~/.codex — or an account you add
  • Show only the agents you use
New pane
Manage
Claude1
Codex2
Gemini3
OpenCode4
Terminal5
Browser6

Launch

Commandclaude

Accounts

Add account
SystemDefaultDefault login · ~/.claude
work@weft.devMax

Get weft.

Install it, point it at a repository, and start your first fleet in about a minute.

v0.0.1

All platforms
  • macOS builds aren’t notarized yet — on first launch, right-click the app and choose Open.
  • Windows and Linux builds are previews and have seen less real-world testing.