▄ █ █ ▀▀█ ▀
▄▄█▄▄ █ ▄▄ ▄ ▄▄ ▄▄▄ ▄▄▄ ▄▄▄█ █ ▄▄▄ ▄ ▄▄ ▄▄▄
█ █▀ █ █▀ ▀ █▀ █ ▀ █ █▀ ▀█ █ █ █▀ █ █▀ █
█ █ █ █ █▀▀▀▀ ▄▀▀▀█ █ █ █ █ █ █ █▀▀▀▀
▀▄▄ █ █ █ ▀█▄▄▀ ▀▄▄▀█ ▀█▄██ ▀▄▄ ▄▄█▄▄ █ █ ▀█▄▄▀
One config for Claude, Codex, Cursor, Kimi, OpenCode, and whatever
comes next.
One config. Every AI tool. Zero repo clutter.
Claude · Codex · Cursor · Kimi · OpenCode · ANY CLI
Threadline is the missing layer between your machine, your repos, and your AI coding assistants. It detects your project stack, installs portable skills across every runtime you use, keeps project state outside your git history, and lets agents resume work through stable handoff IDs.
Stop copying .claude/ folders into every repo. Stop maintaining five different config formats. Threadline normalizes it all.
Most developers now switch between multiple AI coding tools — Claude Code for deep reasoning, Codex for agentic tasks, Cursor for IDE integration, Kimi for long context. Each one wants its own config directory, its own skills folder, its own project metadata. That creates three problems:
- Config sprawl. Every repo grows a mess of
.claude/,.codex/,.cursor/directories. - Skill lock-in. A skill you wrote for Claude Code doesn't work in Codex or Cursor.
- State loss. Switch machines or tools and your project context disappears.
Threadline solves all three with a single, portable runtime layer.
- Multi-Runtime Setup — Configure Claude Code, Codex, Cursor, Kimi, OpenCode, or any generic CLI in one command.
- Zero Repo Clutter — Project profiles live under
~/.local/share/threadline/by default. Your git history stays clean. - Automatic Stack Detection — Detects Node.js, React, Vite, Next.js, TypeScript, Firebase, and more. Recommends only the skills you need.
- Portable Skills — Write skills once. Threadline adapts them for each runtime's expected format.
- Obsidian Handoffs — Generate Markdown handoffs with stable IDs that any agent can resume from.
- RAG Indexing — Manifest-based indexing prepares your repo for retrieval-augmented generation.
- Atomic & Safe — All writes are atomic and idempotent. Merge mode preserves your existing config. Replace mode requires an explicit
--yes. - Modern CLI Tools — Optionally integrates
fd,ripgrep,sd,bat,ast-grep, and RTK for a better terminal experience.
npx threadline-cli setupThis launches an interactive onboarding that scans your system, detects installed AI runtimes, and asks which ones to configure.
npx threadline-cli init --local
npx threadline-cli index
npx threadline-cli handoff create --title "Implemented auth flow"npx threadline-cli setup --replace --yes --runtimes claude,codex
npx threadline-cli init --path ./my-project --local
npx threadline-cli detect --path ./my-project --jsonThreadline works with tools it has never heard of:
npx threadline-cli setup --merge --runtimes gemini,pi,my-custom-cliRequires Node.js 20 or later.
# Run without installing
npx threadline-cli setup
# Or install globally (binary stays `threadline`)
npm install -g threadline-cli
threadline setupEach AI tool gets a normalized adapter. Threadline speaks their config language so you don't have to.
| Runtime | What Threadline Manages |
|---|---|
| Claude Code | Skills, slash commands, project hooks, local settings |
| Codex | Skills, config.toml, MCP configuration, agent roles |
| Cursor | Skills, .cursor/config.toml, rules files |
| Kimi | Skills, commands, .kimi/config.toml |
| OpenCode | Skills, commands, .opencode/config.toml |
| Any CLI | Generic adapter creates ~/.<cli>/skills and ~/.<cli>/commands |
Threadline identifies a project by its git remote URL (or git root if no remote exists) and generates a stable 12-character hash. The same repo resolves to the same profile across machines.
$ threadline detect --json
{
"id": "a1b2c3d4e5f6",
"name": "my-app",
"root": "/Users/you/code/my-app",
"remote": "git@github.com:you/my-app.git",
"packageManager": "npm",
"stacks": ["node", "typescript", "react", "vite"],
"recommendedPresets": ["minimal", "fullstack-js", "react-vite"]
}~/.config/threadline/ # Human-editable config, dotfiles-friendly
~/.local/share/threadline/ # Generated state, profiles, handoffs, indexes
~/.cache/threadline/ # Temporary and cache data
~/.local/share/threadline/projects/<project-id>/
└── workspaces/
└── <workspace-id>/
├── project-profile.json
├── generated/
│ ├── AGENTS.generated.md
│ ├── codex.generated.toml
│ └── claude.generated.json
├── rag/
├── handoffs/
├── knowledge-graph/
└── learnings/
| Command | Purpose |
|---|---|
threadline setup |
Install or sync user-level runtime configuration |
threadline init |
Detect project and generate a project profile |
threadline detect |
Print project detection results |
threadline skills list |
List all available skills from the registry |
threadline skills recommend |
Recommend skills for the current project stack |
threadline index |
Build a manifest-based RAG index |
threadline handoff create |
Write an Obsidian-compatible Markdown handoff |
threadline tools list |
Show available modern CLI tool integrations |
See docs/commands.md for full command reference.
Threadline never needs to overwrite your setup to become useful.
| Mode | Behavior |
|---|---|
merge (default) |
Adds missing managed sections. Preserves everything else. |
adopt |
Inspects your current setup and writes an adoption report. |
replace |
Replaces Threadline-managed files. Requires --yes. |
Project setup is local by default:
| Mode | Behavior |
|---|---|
local |
Stores profile under XDG state. Zero git changes. |
repo |
Materializes files into the repo. Intentionally git-visible. |
- Architecture — Design principles, project identity, and state layout.
- Commands — Full CLI reference.
- Skills — How the skill registry and presets work.
- RAG & Kimi — Retrieval-augmented generation and Kimi integration.
- Handoffs & Obsidian — Session handoffs and Obsidian vault output.
- Runtime Adapters — Adapter interface for adding new runtimes.
- Roadmap — What's shipped and what's next.
Threadline is in early alpha. The current CLI supports project detection, skill listing and recommendation, setup dry-runs, local project profile writes, multi-runtime setup writes, adoption reports, guarded replace mode, Obsidian Markdown handoffs, and manifest-based RAG indexing. Setup writes are atomic, idempotent, reject relative XDG state paths, and fail closed on conflicting unmanaged Codex TOML tables.
LightRAG embeddings, external skill fetching, init --repo, and advanced runtime adapters are staged for follow-up releases.
MIT — see LICENSE.
Threadline is inspired by the frustration of maintaining five different agent configs across dozens of repos. Built for developers who treat AI tools as a toolchain, not a vendor lock-in.