{"id":47639011,"url":"https://github.com/larcane97/clausona","last_synced_at":"2026-04-02T00:35:10.571Z","repository":{"id":343189682,"uuid":"1174568623","full_name":"larcane97/clausona","owner":"larcane97","description":"CLI tool to manage multiple Claude Code profiles","archived":false,"fork":false,"pushed_at":"2026-03-21T16:51:46.000Z","size":173,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T06:52:06.753Z","etag":null,"topics":["claude","claude-code","cli","session-management"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/larcane97.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-06T15:38:21.000Z","updated_at":"2026-03-21T16:51:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/larcane97/clausona","commit_stats":null,"previous_names":["larcane97/clausona"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/larcane97/clausona","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larcane97%2Fclausona","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larcane97%2Fclausona/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larcane97%2Fclausona/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larcane97%2Fclausona/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/larcane97","download_url":"https://codeload.github.com/larcane97/clausona/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larcane97%2Fclausona/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claude-code","cli","session-management"],"created_at":"2026-04-02T00:35:09.416Z","updated_at":"2026-04-02T00:35:10.559Z","avatar_url":"https://github.com/larcane97.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# clausona\n\n**Switch between multiple Claude Code accounts on one machine — plugins, MCP servers, and settings stay shared.**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/dashboard.png\" alt=\"clausona dashboard\" width=\"700\" /\u003e\n\u003c/p\u003e\n\n## Why\n\nYou have multiple Claude Code accounts (personal, work, different orgs), but switching between them on a single machine is tedious:\n\n- **Switching is manual.** You need to log out, log back in, or juggle `CLAUDE_CONFIG_DIR` yourself.\n- **Settings don't carry over.** Each account gets its own config directory, so your MCP servers, plugins, permissions, and settings have to be set up from scratch — every time.\n\nclausona fixes both. Switch profiles with one command — your entire environment carries over.\n\n```bash\ncsn use work     # switch to work account — done\n```\n\nNo re-login. No reinstalling plugins. Just switch and go.\n\n\u003e `csn` is a shorthand alias for `clausona`, registered automatically on install.\n\n## Features\n\n- **One-command switching** — `clausona use \u003cname\u003e` and you're on a different account\n- **Shared environment** — MCP servers, plugins, permissions, and settings are symlinked across all profiles. Set up once, use everywhere.\n- **Pure Claude Code** — no wrapping, no proxying, no background process. Claude Code runs directly and unmodified. Fully compatible with oh-my-claudecode, Cline, and any other tool in your stack.\n- **Lightweight** — a single shell hook and a few symlinks. No daemon, no server, no runtime overhead.\n- **Usage tracking** — per-profile cost and token usage, tracked locally\n- **Interactive dashboard** — TUI for managing profiles, viewing usage, and running health checks\n\n## Install\n\n**Requirements:** Node.js \u003e= 20, [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)\n\n**Platform:** macOS, zsh\n\n```bash\ncurl -fsSL https://github.com/larcane97/clausona/releases/latest/download/install.sh | bash\n```\n\n## Quick Start\n\n```bash\nclausona init        # discover existing Claude Code accounts\nclausona use work    # switch to a profile\nclausona list        # see all profiles with weekly usage\nclausona             # open the interactive dashboard\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `clausona` | Interactive TUI dashboard |\n| `clausona init` | Discover and register Claude Code accounts |\n| `clausona add \u003cname\u003e [--from \u003cpath\u003e] [--merge-sessions]` | Add a profile manually |\n| `clausona remove \u003cname\u003e` | Remove a profile |\n| `clausona use [name]` | Switch active profile |\n| `clausona run \u003cprofile\u003e [-- claude-args...]` | Run Claude Code with a specific profile |\n| `clausona list [--json]` | List all profiles with usage |\n| `clausona usage [name] [--period=today\\|week\\|month\\|all]` | View cost and token usage |\n| `clausona current [--json]` | Show active profile |\n| `clausona config \u003cname\u003e --merge-sessions \\| --separate-sessions` | Configure session mode |\n| `clausona doctor [--json]` | Check profile health |\n| `clausona repair \u003cname\u003e` | Fix broken shared links |\n| `clausona login \u003cname\u003e` | Re-authenticate a profile |\n| `clausona uninstall` | Uninstall clausona completely |\n\n## How It Works\n\n### Profile Switching\n\nA `claude()` shell wrapper is registered via `eval \"$(clausona shell-init)\"`:\n\n1. **Before** each `claude` invocation — reads `~/.clausona/profiles.json` and sets `CLAUDE_CONFIG_DIR` to the active profile's config directory\n2. **After** each `claude` invocation — detects usage changes via fingerprint comparison and records cost/token usage per profile\n\n```\nclausona use work\n↓\nclaude             ← wrapper sets CLAUDE_CONFIG_DIR, then runs claude\n↓\n_track-usage       ← on exit, records any new cost/token usage\n```\n\n### Shared Environment\n\nWhen you register a new profile, clausona symlinks shared resources from your primary `~/.claude` into the new profile's config directory:\n\n```\n~/.claude-work/            (new profile)\n├── .claude.json           ← own auth credentials (NOT shared)\n├── projects/              ← own session history (NOT shared by default)\n├── mcp-servers/  →  ~/.claude/mcp-servers    (symlink to primary)\n├── plugins/      →  ~/.claude/plugins        (symlink to primary)\n├── settings.json →  ~/.claude/settings.json  (symlink to primary)\n└── ...\n```\n\nOnly `.claude.json` stays profile-specific. Everything else is shared automatically.\n\n**Session separation** is the default: each profile keeps its own `projects/` directory, so `/resume` only shows that profile's conversations. To share session history across profiles, pass `--merge-sessions` when adding or initializing.\n\n### Data Storage\n\nAll data stays local on your machine.\n\n```\n~/.clausona/\n├── profiles.json    # registered profiles and active selection\n├── usage.json       # per-profile usage history\n└── backups/         # backups of imported profile directories\n\n~/.claude-\u003cname\u003e/        # profile config directories (created by `clausona add`)\n```\n\n## Contributing\n\nIssues and pull requests are welcome at [github.com/larcane97/clausona](https://github.com/larcane97/clausona).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarcane97%2Fclausona","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flarcane97%2Fclausona","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarcane97%2Fclausona/lists"}