No GUIs. No dashboards. No Electron wrappers.
If it doesn't run in a terminal, we don't ship it.
Text is the interface. The keyboard is the mouse. The shell is the OS.
Every tool does one thing. Every tool composes with the others.
It started as a text-based multiplayer RPG. Building the game meant building tools — for managing Claude Code sessions, switching accounts, coordinating agents across repos. Those tools kept growing. At some point the tooling became its own project. This is that project.
A persistent text-based multiplayer RPG. Players connect from any terminal — or any client that speaks the protocol. AI-driven NPCs share the world with human players. Everything is text. Everything is live.
We are building an open client/server standard around the game: a typed WebSocket protocol, a reference server, and a web client — so the world can be reached from anywhere, and anyone can build a client against the spec.
There is something else. The boundary between the game world and everything outside it is not as fixed as it looks. More on that when it's ready.
An infrastructure layer for AI coding agents. Today, opinionated and Claude-first. Tomorrow, open standards — every tool aims to speak whatever the agent ecosystem converges on (A2A, MCP, and the rest).
One install, one CLI for the entire text- stack. Onboards you through the tools in dependency order, bootstraps Go binaries from GitHub releases, and exposes custom combo commands that chain actions across tools. The package manager for Paperworlds.
Manage multiple Claude Code accounts with full directory isolation. Claude doesn't have profile switching — we needed separate work/personal accounts with isolated sessions, memory, and settings.
Local proxy for the Claude API that captures token consumption stats. Understand how your agentic workflows spend tokens — per session, per prompt, per model. The MITM seat is also the right place to grow into a response cache: same prompt, free answer.
TUI for Claude Code session management. Browse, search, tag, and resume sessions across repos and profiles. Built for heavy users who lose track of dozens of parallel conversations.
Async coordination layer for Claude Code sessions. Post threads when you hit a cross-repo dependency, pick them up from another session. File-based, YAML threads, zero infrastructure. Ships inside textworkspace.
Context-aware link reader. URL in, relevance verdict and summary out — lensed through your stored profile and current projects. Runs as a fresh Haiku subagent per read; raw content cached locally so you can re-map without re-fetching.
Fleet manager for MCP servers. Start, stop, and monitor Docker-based and native MCP servers from a single CLI. Injects credentials from your password manager at runtime and auto-registers servers with Claude Code.
YAML-first knowledge graph with a Kuzu backend and MCP server. Agents query it for protocols, open initiatives, and intent→tool mappings — context recovery without reading prose. YAML is the human-authored source of truth; textmap sync keeps the graph in step. Integrated with textworkspace.
Lightweight DAG runner for AI coding agents. Reads numbered prompt files with YAML frontmatter, resolves depends_on chains, runs eligible tasks via claude -p, and surfaces live progress in a TUI. Decompose features into ordered prompts, track progress and cost.
Routing layer between Paperworlds tools and the external apps your day already runs on. One module per integration, one YAML flow per source-to-sink mapping, content-hashed idempotency so the same action never gets pushed twice. Inaugural plugin: Todoist, with calendar sync via the existing iCal feed (no separate Google auth).
Community-shared workflow recipes for textworkspace. YAML files that chain tool actions into reusable combos — install from local files, gists, or repos. Define your own, share with your team.
tw forwards unknown subcommands to the right tool — one muscle-memory entry point, no shimming.
tw start data swaps profile, brings up servers, opens a session. One command, named context.
YAML recipes for multi-step workflows. Any combo name becomes a top-level tw command.
tw doctor runs health checks, finds stale paths, and verifies spec conformance across every installed tool.
Register an existing ~/.claude* directory in place — nothing moved, nothing copied.
Auth-only copies of a parent profile for parallel work — same login, isolated session state.
The TUI surfaces unregistered ~/.claude* directories as adoption suggestions.
Local proxy intercepts api.anthropic.com responses and extracts input + cache token counts. Doesn't change Claude Code's behaviour.
Atomic writes to ~/.files/states/ctx.json for live context-window display in your shell statusline.
Built for Claude Team / Claude.ai users who don't pay per token but still want to know what each session burns.
Already MITMs every API call — the next step is response caching. Identical prompts return cached answers; agentic loops stop paying twice for the same work.
textproxy handles the output side of the token economy; RTK handles the input side — compressing tool output before it reaches the LLM. Same goal, opposite ends of the pipe.
Browse, search, tag, and resume every Claude Code session across every repo and profile.
Triage dozens of parallel conversations by tag and priority. Built for heavy users who lose track.
If textaccounts and textproxy are installed, profile and token data show up automatically — no config.
URL in, relevance verdict and summary out — lensed through your role and current projects, not a generic abstract.
Raw + cleaned markdown stored locally — re-map the same URL with new context without re-fetching.
--via-cli shells out to claude -p — no separate API key required, just the CLI you already have.
Server credentials are pulled from 1Password at start time and cached in ~/.cache/mcp-<name>. No secrets in dotfiles.
textserve start <name> brings the server up and registers the MCP endpoint with Claude Code in one step.
textserve start --tag ci brings up every server matching a tag. Group servers however your workflow needs.
textserve add generates the directory, server.yaml, hook.sh, and README — fill in env, run start.
10 node types and 11 edge relations. Curated, queryable by relation — the canonical answer is the same every time.
Edit graph.yaml by hand, run textmap sync, the Kuzu DB rebuilds deterministically.
Seven tools (search, query_node, query_relation, query_why, expand, …) so an agent can reach the graph through MCP.
Agents can propose new nodes — they land in textmap inbox for human review before they touch the graph.
Pull from .md frontmatter, Cursor .mdc rules, toolmaps, and inventory finding files. Five built-in pipelines.
Numbered prompt files with depends_on — pp run resolves the chain, runs eligible tasks via claude -p.
Per-task and per-pipeline cost tracking. pp cost forecast estimates pending tasks before you spend.
pp view shows projects, features, and tasks with state, model, and cost — live-tail any task.
pp features new + pp features plan decompose a LEAD.md into ordered YAML prompt files automatically.
Each prompt picks haiku, sonnet, or opus — match cost to task, not pipeline-wide.