Work — 2026
ws
A Rust CLI that gives coding agents a persistent workspace — and lets you switch between Claude Code and Codex without starting over.
Runs on: terminal
Coding agents forget. Every new session starts cold, re-derives what it already knew last time, and re-asks what you already answered. ws gives each project a named workspace that outlives any single session — code, durable notes, memory, handoffs and agent state in one place you can leave and come back to.
The part I built it for: the same workspace works with both Claude Code and Codex. Hit a usage limit in one, write a handoff, and continue in the other without re-explaining the project. Durable project rules live once in .ws/conventions.md, which both agents are told to read on start, so “this repo has no test suite” is stated one time rather than once per agent.
Around that it grew the things a long-running session actually needs. Git worktree workspaces with ws <base>@<feature>, merged back when done. Secrets in the keyring, with credential-shaped strings redacted out of any file an agent writes through its edit tools — and restorable afterwards. Per-actor timelines, so you can see who did what. Messages passed between workspaces, so two agents on related work can tell each other something. A working-tree save every turn, beside your branch, so a session that dies doesn’t take an hour of uncommitted work with it.
It’s open source, and it’s honest about its lineage: the idea comes from cs (claude-sessions). ws is an independent take built to serve two agents rather than one.