Skip to content

Latest commit

Β 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CC Switch Headless

Headless Linux All-in-One manager for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent

License: MIT Platform Upstream Schema Status

🌐 The Only Official Website: github.com/tiezbro/cc-switch-headless

English | δΈ­ζ–‡ | Changelog

Disclaimer

Community-maintained headless Linux distribution based on CC Switch. Not an official farion1231/cc-switch release.

This repository is not a second CC Switch. Official CC Switch remains the product. We add a Linux headless runtime so that same core can run on servers without a GUI, and we stay aligned with official updates.

The desktop product's website is ccswitch.io. This project's site is this GitHub repository. Copyright and MIT notices: LICENSE, NOTICE.

Sponsor

This repository is independently maintained. If you would like to sponsor the work to finish CC Switch Headless, please contact me:

This is not the official CC Switch sponsor list. Desktop-app sponsors belong on farion1231/cc-switch.

Why CC Switch Headless?

Official CC Switch already unifies the tools:

  • One App, Eight Tools β€” Manage Claude Code, Claude Desktop, Codex, Gemini CLI, Grok Build, OpenCode, OpenClaw, and Hermes from a single interface
  • No More Manual Editing β€” 50+ provider presets including AWS Bedrock, NVIDIA NIM, and community relays; just pick and switch
  • Unified MCP & Skills Management β€” One panel to manage MCP servers and Skills across Claude, Codex, Gemini, Grok Build, OpenCode, and Hermes with bidirectional sync
  • System Tray Quick Switch β€” Switch providers instantly from the tray menu, no need to open the full app
  • Cloud Sync β€” Sync provider data across devices via Dropbox, OneDrive, iCloud, or WebDAV servers
  • Cross-Platform β€” Native desktop app for Windows, macOS, and Linux, built with Tauri 2
  • Built-in Utilities β€” First-launch login confirmation, signature bypass, plugin extension sync, and more

A lot of multi-agent work now happens on remote VMs. Claude Code, Codex, OpenCode, OpenClaw, Grok Build, and Hermes are CLI products: they already run on Linux servers. Official CC Switch is a Tauri desktop app. On a VM there is no display session, no tray, and no WebKitGTK β€” the official UI does not start.

That gap is why Headless exists. On one remote Linux host you can:

  • configure each agent's providers in one place
  • manage Skills and MCP across those agents together
  • do it without a graphical session, over SSH or a browser

We do not reimplement CC Switch. We keep adapting the official product.

Current status

This project is just getting started. We are still shaping CC Switch Headless.

If you are interested, please star the repo β€” you will see the whole product grow from here.

Not a new CC Switch

Official CC Switch stays the product. This repository keeps that core and only adds the Linux runtime a desktop app cannot provide on a server without a GUI.

Operators (SSH / browser)
  β†’ cc-switch-ctl and Web UI     (this project; planned)
      β†’ cc-switch-daemon         (this project; Linux, no Tauri)
          β†’ official Services / DAO / Proxy / live-file writes
              (cc-switch/ at the pin in UPSTREAM.lock)
                  β†’ ~/.cc-switch/cc-switch.db
                  β†’ live CLI configs (Claude Code, Codex, OpenCode, …)
                  β†’ ~/.cc-switch-headless/   (auth, session, audit only)
Layer Who owns it What we do
Official CC Switch (cc-switch/) farion1231/cc-switch Import the tree. Reuse Schema, migrations, DAO, Service, Proxy, and live config writes. Follow official tags.
Headless runtime This repository Linux daemon, local CLI, browser control plane. No Tauri window, WebKitGTK, X11, Wayland, or tray.
Web-only state This repository Auth, session, and audit live under ~/.cc-switch-headless/. They are not extra columns on official cc-switch.db.

Each Headless version tracks one official tag/commit (see UPSTREAM.lock). Updates come in with git subtree pull --prefix=cc-switch --squash against official tags. Official git history is not merged into this main, and the official Schema is not forked.

Architecture

Official CC Switch already uses these patterns. We keep them:

  • SSOT β€” providers, MCP, prompts, and skills live in ~/.cc-switch/cc-switch.db
  • Dual-layer storage β€” SQLite for syncable data; JSON for device-level settings
  • Dual-way sync β€” write live CLI files on switch; backfill from live when editing the active provider
  • Atomic writes β€” temp file + rename so configs are not truncated
  • Single writer β€” cc-switch-daemon will be the only process that writes the database and live files (do not run the official desktop app against the same data at the same time)

What changes is how you reach that core, not the core itself:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Browser UI / cc-switch-ctl                                 β”‚
β”‚  (Headless transport; planned)                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚ HTTP / local CLI
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  cc-switch-daemon  (Linux headless runtime)                 β”‚
β”‚  no Tauri Β· no display server                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚ same Services β†’ DAO β†’ Database
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Official tree in cc-switch/                                β”‚
β”‚  Provider / MCP / Skills / Proxy / Sessions                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Names

Role Id
Product CC Switch Headless
Repository cc-switch-headless
Daemon cc-switch-daemon
CLI cc-switch-ctl
systemd cc-switch-daemon.service

What we inherit vs what we add

From official CC Switch (Linux CLI apps; Claude Desktop stays on the desktop product): provider presets and switching, unified MCP and Skills, prompts, proxy/failover where those Linux agents support it, sessions, usage, backups. Behavior tracks the pinned official version.

What Headless adds: a systemd service, a daemon as the single writer, cc-switch-ctl for SSH, and a browser UI for the same jobs β€” Linux only (x86_64 and aarch64).

This project:

  • runs on Linux servers without a GUI
  • reuses the official database, migrations, services, proxy, and live config writes
  • does not add tables or columns to official cc-switch.db
  • does not turn every desktop window command into an HTTP API

Upstream pin

Field Value
Upstream farion1231/cc-switch
Tag v3.20.0
Commit 0b5da510168914b251481654a568c3ffacd62cf4
Schema 17
Import cc-switch/ (git subtree, --squash)

Full field set: UPSTREAM.lock.

To follow a newer official tag:

git fetch upstream tag vX.Y.Z
git subtree pull --prefix=cc-switch --squash upstream vX.Y.Z

Then update UPSTREAM.lock (tag, commit, schema_version).

Repository layout

cc-switch-headless/
β”œβ”€β”€ README.md / README_ZH.md
β”œβ”€β”€ CHANGELOG.md              # this project
β”œβ”€β”€ LICENSE / NOTICE
β”œβ”€β”€ UPSTREAM.lock
β”œβ”€β”€ docs/
└── cc-switch/                # official tree at the pin

Official sources appear only under cc-switch/. This GitHub repo is independent public git; it is not a GitHub Fork of farion1231/cc-switch.

Development

There is no Headless daemon build yet. Upstream checks (run inside cc-switch/):

pnpm --dir cc-switch typecheck
pnpm --dir cc-switch format:check
pnpm --dir cc-switch test:unit
cargo test --manifest-path cc-switch/src-tauri/Cargo.toml

Toolchain pins are in UPSTREAM.lock.

Contributing

Issues and suggestions are welcome. Please discuss first if a change would fork the official Schema, reimplement services, or target Windows, macOS, or a desktop window.

Acknowledgements

CC Switch Headless exists because of official CC Switch.

Thank you to farion1231/cc-switch and Jason Young for the All-in-One manager, the SQLite core, and the MCP/Skills model this project keeps adapting.

If you want the official desktop app or its sponsor list, go to the upstream project. To sponsor this Headless work, see Sponsor.

License

MIT. Original files in this repository are copyright tiezbro (2026). Upstream CC Switch remains copyright Jason Young and is imported under cc-switch/. See LICENSE and NOTICE.

About

A headless Linux All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Community-maintained for servers without a GUI; not an official CC Switch release.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages