$ whoami·claude code enabler

Claude Code, multiplied.

A native tab manager for Claude Code. Profiles, packs, fuzzy search, workflows, Telegram bridge, AI permission policies. All on your machine.

built by engineers · for engineers

v1.4.9·macOS 13+·100% local·AGPL·9.8 MB
CT
## review · session #3
branch feat/oauth-refresh
diff 14 files · +312 −47
model opus-4.7 · policy review-only
type a step…[CAVEMAN:ULTRA]xhigh/effort
Sessions: 3cargo build --release · 47/82 crates… (running)
on-machine
Zero telemetry. SQLite archive in ~/.claude-tabs/. No account.
engineer-built
Tauri 2 + Rust + React 19. Open source. Built by someone who runs Claude Code all day.
auto-updating
Signed releases pulled in the background. Restart, you're on the new build.
─── features ────────────────────────────────────────────────────────────
> profiles

Reusable session templates with input injection.

Define a Claude Code session once. Prompt template, model, allowed tools, working directory, system prompt, default policy. Then spawn it forever.

Templates use {{variables}} auto-detected from the prompt. The launcher generates a form (text, select, multi-select) and routes inputs into the spawned session.

  • · per-profile model override + allowed-tools whitelist
  • · fixed, prompted, or input-sourced cwd routing
  • · skills sync · auto-execute toggle · default policy
CTprofiles · ⌘⇧P
revieweropus-4.7read,grep,test
feature-implsonnet-4.6all
doc-writerhaiku-4.5read,write(md)
rust-portopus-4.7read,write,bash
{{branch}}main · {{ticket}} CT-104
> search

Fuzzy switch any tab or command. ⌘K.

One palette. Tabs by name or directory, commands by label or shortcut. Dismiss it and focus snaps back to the terminal.

Prefix > to switch from tab-search to the keybinding registry. Every action in the app is reachable from the keyboard.

  • · extensible command registry · live tab badges
  • · match name OR working directory
  • · no mouse required, ever
CT⌘K · search & commands
tele5 results
tabtelegram-bot/src/lib.rstab · #2
tabtelemetry-configsession · paused
cmdToggle Telegram bridge⌘⇧T
cmdPair phone…
tabrelease-notes (telegram /rc)archived
> on-machine

Your sessions stay on your disk. Forever.

Every conversation auto-archives to a local SQLite database at ~/.claude-tabs/archive.db (WAL mode). No cloud, no signup, no telemetry. Resume or fork past sessions offline.

Profiles, packs, system-prompts, and Telegram pairing live as plain files. Version-control them, sync them, or burn them.

CT~/.claude-tabs/
$ tree ~/.claude-tabs
├── archive.db
// SQLite, WAL mode
├── packs/
├── profiles/
├── system-prompts/
└── telegram-pairing.json
0 endpoints
telemetry
none
cloud
not required
account
> packs

Spawn a swarm of profiles in parallel.

A pack is a named bundle of profiles. Run a pack and ClaudeTabs spawns each profile as its own tab. Input fields fan out across the sessions for cartesian-product orchestration.

Stop shell-scripting your AI. $ pack run ship-it and walk away.

CTpacks/ · 3 bundles
review-stack3 profiles
linter + tests + reviewer
ship-it4 profiles
impl + docs + changelog + bump
rescue-prod2 profiles
logs scanner + hotfix
$ pack run review-stack --branch=feat/x → spawns 3 sessions in parallel
> workflows · coming soon

Separate the orchestrator from the implementer.

You are the orchestrator. You define what needs to happen and the criteria for each step. The agent is the implementer. It works one step at a time, in a clean session, with only the context that step needs.

A typical pipeline: implement open PR with criteria /compact unbiased review address review items. Each step gets a fresh, focused context. Not a 200KB blob of everything that came before.

Context is the bottleneck. ClaudeTabs hands the agent only what the current step needs.

CTorchestration · ship a feature
coming soon
feature-impl
implement OAuth refresh flow
▣ done
pr-author
open PR · tests, types, no skipped
▣ done
/compact
context cleared · 47KB → 3KB
▣ done
reviewer
unbiased review against criteria
◆ running
address-fixes
apply review items only
○ pending
orchestrator = you · defines steps + criteria
implementer = agent · one step, isolated context
> telegram

Spawn sessions from your phone.

Pair your machine once. Send /run from Telegram, pick a profile, fill its inputs from chat. ClaudeTabs spawns the session on your laptop and sends the live remote-control link back.

Drive the session from your phone. Read output, send input, accept policies. Laptop stays closed.

CTtelegram · @claudetabs_bot
/pair 4F2A-9C
✓ paired with mac-pro-m3
Pick profile:
reviewership-ithotfix
session #4 live
→ claude.ai/code/rc/9F-X2P-A4Q
> policies

Natural-language permission policies.

Write a policy per session in plain English: allow reads and tests, deny git push, ask for installs. An LLM evaluator reads each tool call against the policy and auto-accepts, denies, or asks.

No more Y/N prompts every 30 seconds. No more typing --dangerously-skip-permissions and praying.

CTpolicy · session #3
# natural language policy
allow read, grep, run tests, edit src/**
deny git push, rm -rf, network calls
ask npm install, schema migrations
live evaluation
Read(src/lib.rs)auto
Bash(cargo test)auto
Bash(git push)deny
Bash(npm i lodash)ask
─── engineering ────────────────────────────────────────────────────────────
> built in the open

Built by an engineer who lives in Claude Code.

ClaudeTabs is built by MjMoshiri in the open. No VC. No telemetry. No growth team. A Rust backend, a React frontend, and a steady stream of commits.

stack
Tauri 2 · Rust · React 19
license
AGPL-3.0
platform
macOS · win/linux soon
CTgit log --oneline · last commits
bc27e2achore: archive project
31c8fa1docs: update changelog for 1.4.5 through 1.4.9
3d94988chore: bump version to 1.4.9
54efd25fix: spawn PTY at viewport size + debounce resize
ba2f472chore: bump version to 1.4.8
─── faq ────────────────────────────────────────────────────────────
Q:Does ClaudeTabs send anything to my server, your server, or any server?+
A: No. Sessions live in ~/.claude-tabs/. Zero analytics endpoints. The only network calls are the ones Claude Code itself makes to Anthropic.
Q:Do I need a ClaudeTabs account?+
A: There is no account. Download, open, work. The only optional auth is your own Telegram bot token if you want the mobile bridge.
Q:How does the auto-accept policy decide?+
A: A side-channel LLM evaluator reads your natural-language policy plus the proposed tool call and returns allow/deny/ask. Flip it off with one click.
Q:Will it run on Windows or Linux?+
A: macOS 13+ is the primary build today. Windows and Linux build configs exist. They're untested and on the roadmap.
Q:Is it open source?+
A: Yes. AGPL-3.0. Source on GitHub.
Q:How do updates work?+
A: ClaudeTabs ships a signed auto-updater. New releases are checked in the background, downloaded, and verified. Restart the app and you're on the latest build. No App Store, no manual .dmg dance.
─── ─── ────────────────────────────────────────────────────────────
$ ready when you are

Stop juggling Claude tabs in a stock terminal.

Use the manager engineers want.

$curl -fsSL claudetabs.app/install.sh | sh
(or grab the .dmg above. same thing)