{"id":48842646,"url":"https://github.com/genuifx/claude-code-env-manager","last_synced_at":"2026-04-25T19:01:47.673Z","repository":{"id":325656729,"uuid":"1101950341","full_name":"Genuifx/claude-code-env-manager","owner":"Genuifx","description":"Control center for Claude Code \u0026 Codex — multi-model parallel sessions, Telegram remote control,      scheduled cron tasks with push notifications, usage analytics, permission modes. CLI + native macOS    desktop app.","archived":false,"fork":false,"pushed_at":"2026-04-15T01:35:18.000Z","size":244772,"stargazers_count":15,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T03:26:16.954Z","etag":null,"topics":["ai-coding","anthropic","cc-permissions","cc-provider","cc-usage","claude-code","cli","codex","cron-jobs","desktop-app","developer-tools","openai","telegram-bot","token-usage"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Genuifx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-22T14:43:00.000Z","updated_at":"2026-04-15T01:35:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Genuifx/claude-code-env-manager","commit_stats":null,"previous_names":["genuifx/claude-code-env-manager"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/Genuifx/claude-code-env-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genuifx%2Fclaude-code-env-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genuifx%2Fclaude-code-env-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genuifx%2Fclaude-code-env-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genuifx%2Fclaude-code-env-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Genuifx","download_url":"https://codeload.github.com/Genuifx/claude-code-env-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genuifx%2Fclaude-code-env-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32273223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"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":["ai-coding","anthropic","cc-permissions","cc-provider","cc-usage","claude-code","cli","codex","cron-jobs","desktop-app","developer-tools","openai","telegram-bot","token-usage"],"created_at":"2026-04-15T03:03:12.879Z","updated_at":"2026-04-25T19:01:47.661Z","avatar_url":"https://github.com/Genuifx.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./logo.png\" alt=\"CCEM Logo\" width=\"160\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eCCEM\u003c/h1\u003e\n\u003cp align=\"center\"\u003eClaude Code \u0026 Codex Environment Manager\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Use Claude Code \u0026 Codex like a pro.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"./README_zh.md\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\n[![npm version](https://img.shields.io/npm/v/ccem.svg)](https://www.npmjs.com/package/ccem)\n[![GitHub stars](https://img.shields.io/github/stars/Genuifx/claude-code-env-manager)](https://github.com/Genuifx/claude-code-env-manager)\n[![GitHub release](https://img.shields.io/github/v/release/Genuifx/claude-code-env-manager)](https://github.com/Genuifx/claude-code-env-manager/releases)\n[![license](https://img.shields.io/npm/l/ccem.svg)](https://github.com/Genuifx/claude-code-env-manager/blob/main/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Genuifx/claude-code-env-manager/pulls)\n\n![Shot](./screenshots/shots.webp)\n\n---\n\n## Why This Exists\n\nHonestly, after using Claude Code for a while, some things just get really annoying.\n\nYou want KIMI for frontend, Opus for architecture, DeepSeek for scripts. But every time you switch models you're manually `export`-ing a bunch of env vars, forgetting which terminal is connected to which model, ending up with eight tabs open and no idea what's going on.\n\nPermissions too. Approving every single command gets old fast. But `--dangerously-skip-permissions` is a bit too yolo — what if it nukes your `.env`?\n\nThen you want to check how much you've spent this month. Claude Code won't tell you. Codex won't tell you. The combined bill across both? No idea.\n\nAnd here's the real kicker — you're out grabbing coffee, and you need Claude to fix something. Your computer's at home running. You're just... stuck.\n\nOr maybe you want Claude to automatically run tests every night, review your PRs, and push the results to your phone. That's not a crazy ask, right? But nothing out there does this.\n\nSo I built ccem.\n\nEnvironment switching, permission management, multi-model parallel sessions, usage analytics, cron tasks, remote control from your phone — one tool, all covered.\n\nTwo flavors — pick whichever you like:\n\n| | CLI | Desktop App |\n|--|-----|-------------|\n| Best for | Terminal lovers, scripting | GUI fans, power features |\n| Environment management | ✅ | ✅ |\n| Permission modes | ✅ | ✅ |\n| Usage analytics | ✅ | ✅ Heatmap + trends |\n| Skill management | ✅ | ✅ Streaming search |\n| Claude Code + Codex dual engine | — | ✅ |\n| Telegram remote control | — | ✅ |\n| WeChat remote control | — | ✅ |\n| Cron tasks | — | ✅ |\n| Conversation history | — | ✅ |\n| API request debugging | — | ✅ |\n\nBoth share the same config file (`~/.ccem/config.json`). Change an environment in Desktop and the CLI picks it up instantly, and vice versa.\n\n---\n\n# CLI\n\nEnvironment switching, permission management, usage stats, and skill installation — all from your terminal.\n\n## Install\n\n```bash\nnpm install -g ccem\n# or\npnpm add -g ccem\n# or just run it\nnpx ccem\n```\n\n## Quick Start\n\n```bash\nccem              # Interactive menu\nccem add kimi     # Add KIMI env with pre-filled URL and models\nccem use kimi     # Switch to KIMI\nccem dev          # Launch Claude Code in dev permission mode\nccem usage        # View token usage and costs\nccem skill add    # Interactive skill installer\n```\n\n![Demo](./screenshots/cli-index.webp)\n\n![CLI Demo](./demo.png)\n\n## Environment Management\n\n### Built-in Presets\n\nWhen adding an environment, choose a preset to auto-fill the URL and models:\n\n| Preset | Base URL | Main Model | Fast Model |\n|--------|----------|------------|------------|\n| GLM (Zhipu) | `https://open.bigmodel.cn/api/anthropic` | glm-5 | glm-4.5-air |\n| KIMI (Moonshot) | `https://api.moonshot.cn/anthropic` | kimi-k2.5 | kimi-k2.5 |\n| Kimi Code Plan | `https://api.kimi.com/coding/` | kimi-for-coding | kimi-for-coding |\n| MiniMax | `https://api.minimaxi.com/anthropic` | MiniMax-M2.7 | MiniMax-M2.7-highspeed |\n| DeepSeek | `https://api.deepseek.com/anthropic` | deepseek-chat | deepseek-chat |\n| Bailian (Aliyun) | `https://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy` | qwen3-coder-plus | qwen3-coder-flash |\n| Bailian Code Plan | `https://coding.dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy` | qwen3-coder-plus | qwen3-coder-plus |\n| OpenRouter | `https://openrouter.ai/api/v1` | anthropic/claude-opus-4-1 | anthropic/claude-3.5-haiku |\n\n\u003e Official environment defaults to `claude-sonnet-4-5-20250929` + `claude-haiku-4-5-20251001`\n\n### Commands\n\n```bash\nccem ls              # List all environments\nccem use \u003cname\u003e      # Switch environment\nccem add \u003cname\u003e      # Add environment\nccem del \u003cname\u003e      # Delete (can't delete \"official\")\nccem rename \u003ca\u003e \u003cb\u003e  # Rename\nccem cp \u003csrc\u003e \u003cdst\u003e  # Copy\nccem current         # Show current environment\nccem env             # Output export commands (pipe-friendly)\nccem env --json      # JSON format\nccem run \u003ccmd\u003e       # Run command with env vars injected\n```\n\n### Shell Integration\n\nAfter `ccem use`, the current shell's env vars won't update automatically. Add this to `~/.zshrc`:\n\n```bash\nccem() {\n  command ccem \"$@\"\n  local exit_code=$?\n  if [[ $exit_code -eq 0 ]]; then\n    if [[ \"$1\" == \"use\" || -z \"$1\" ]]; then\n      eval \"$(command ccem env)\"\n    fi\n  fi\n  return $exit_code\n}\n```\n\nThen run `source ~/.zshrc`.\n\n## Permission Modes\n\n6 presets that sit between \"approve everything\" and \"approve nothing.\"\n\n| Mode | Description | When to use |\n|------|-------------|-------------|\n| yolo | Allow everything | Your own project, full trust |\n| dev | Dev permissions, block sensitive files | Daily development |\n| readonly | Read-only access | Code review, learning |\n| safe | Restrict network and writes | Unfamiliar codebases |\n| ci | CI/CD suitable | Automation pipelines |\n| audit | Read + search only | Security audits |\n\n### Temporary (reverts on exit)\n\n```bash\nccem yolo / dev / readonly / safe / ci / audit\n```\n\n### Permanent (writes to config)\n\n```bash\nccem setup perms --dev        # Apply permanently\nccem setup perms --reset      # Reset\nccem setup default-mode --dev # Set default mode\n```\n\n### View\n\n```bash\nccem --mode        # Current mode\nccem --list-modes  # All modes\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWhat dev mode allows / blocks\u003c/b\u003e\u003c/summary\u003e\n\n**Allowed:** Read, Edit, Write, Glob, Grep, LSP, NotebookEdit, npm/pnpm/yarn/bun/node/npx/git/tsc/tsx, eslint/prettier/jest/vitest, cargo/python/go/make, ls/cat/head/tail/find/wc/mkdir/cp/mv/touch, WebSearch\n\n**Blocked:** .env/.env.*/secrets/*.pem/*.key/*credential*, rm -rf/sudo/chmod/chown\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWhat safe mode allows / blocks\u003c/b\u003e\u003c/summary\u003e\n\n**Allowed:** Read, Glob, Grep, LSP, git status/log/diff, ls/cat/head/tail/find/wc\n\n**Blocked:** .env/secrets/*.pem/*.key/*credential*/*password*, Edit/Write/NotebookEdit, curl/wget/ssh/scp/WebFetch, rm/mv\n\n\u003c/details\u003e\n\n## Usage Analytics\n\n```bash\nccem usage          # Interactive with calendar heatmap\nccem usage --json   # Machine-readable\n```\n\nParses JSONL logs from `~/.claude/projects/` to calculate token usage and costs. Price data fetched from LiteLLM and cached locally.\n\n## Skill Management\n\n```bash\nccem skill add              # Interactive picker (Tab to switch groups)\nccem skill add \u003cname\u003e       # Install preset\nccem skill add \u003cgithub-url\u003e # Install from GitHub\nccem skill ls               # List installed\nccem skill rm \u003cname\u003e        # Remove\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePreset Skills\u003c/b\u003e\u003c/summary\u003e\n\n**Official:** frontend-design, skill-creator, web-artifacts-builder, canvas-design, algorithmic-art, theme-factory, mcp-builder, webapp-testing, pdf/docx/pptx/xlsx, brand-guidelines, doc-coauthoring\n\n**Curated:** superpowers (enhanced Plan mode), ui-ux-pro-max (pro UI/UX design), Humanizer-zh (de-AI-ify Chinese text)\n\n\u003c/details\u003e\n\n## Remote Config\n\nShare API configurations across your team with encrypted transport:\n\n```bash\nccem load https://your-server.com/api/env?key=YOUR_KEY --secret YOUR_SECRET\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eServer deployment\u003c/b\u003e\u003c/summary\u003e\n\nServer code lives in `server/`. Configure `keys.json` (access keys) and `environments.json` (env vars), then run `node index.js`. Features AES-256-CBC encryption, rate limiting, and hot-reload. PM2 recommended for production.\n\n\u003c/details\u003e\n\n## Setup\n\n```bash\nccem setup init\n```\n\nSkips onboarding + disables telemetry + installs chrome-devtools MCP.\n\n## CLI Command Reference\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFull list\u003c/b\u003e\u003c/summary\u003e\n\n| Command | Description |\n|---------|-------------|\n| `ccem` | Interactive menu |\n| `ccem ls` | List environments |\n| `ccem use \u003cname\u003e` | Switch |\n| `ccem add \u003cname\u003e` | Add |\n| `ccem del \u003cname\u003e` | Delete |\n| `ccem rename \u003ca\u003e \u003cb\u003e` | Rename |\n| `ccem cp \u003csrc\u003e \u003cdst\u003e` | Copy |\n| `ccem current` | Current environment |\n| `ccem env [--json]` | Output env vars |\n| `ccem run \u003ccmd\u003e` | Run with env |\n| `ccem load \u003curl\u003e` | Load remote config |\n| `ccem yolo/dev/readonly/safe/ci/audit` | Temporary permission mode |\n| `ccem --mode` | Current mode |\n| `ccem --list-modes` | All modes |\n| `ccem setup perms --\u003cmode\u003e` | Permanent permissions |\n| `ccem setup default-mode --\u003cmode\u003e` | Default mode |\n| `ccem setup init` | Initialize |\n| `ccem usage [--json]` | Usage stats |\n| `ccem skill add/ls/rm` | Skill management |\n\n\u003c/details\u003e\n\n---\n\n# Desktop App\n\nA native desktop app built with Tauri 2.0. Real macOS vibrancy and glassmorphism — not an Electron wrapper.\n\nOn top of everything the CLI offers, Desktop brings several exclusive capabilities: dual engine support, remote control via Telegram, cron tasks, conversation history, and API traffic debugging.\n\n## Install\n\nDownload `.dmg` from [GitHub Releases](https://github.com/genuifx/claude-code-env-manager/releases) and drag to Applications.\n\n\u003e Requires macOS 10.15 Catalina or later.\n\n## Claude Code + Codex Dual Engine\n\n\u003c!-- TODO: screenshot of History page showing Claude/Codex conversations --\u003e\n![History](./screenshots/history.webp)\n\nThis might be the feature you didn't know you wanted.\n\nDesktop supports both **Claude Code** and **OpenAI Codex CLI** as runtime engines. The Dashboard launch panel has a dropdown — pick Claude or Codex, hit launch.\n\nWhen Claude is selected, environment switching and permission modes work as usual. When Codex is selected, those controls hide automatically — Codex has its own config, no need for ccem's environment settings.\n\nBoth session types are managed in a unified view on the Sessions page, each with proper icons and status indicators. Proxy Debug also captures API traffic from both engines.\n\nIn short, ccem Desktop isn't just a Claude Code manager — it's a control center for your local AI coding assistants.\n\n## Telegram Remote Control\n\n\u003c!-- TODO: screenshot of ChatApp / Telegram panel --\u003e\n![Telegram](./screenshots/telegram.webp)\n\nControl Claude Code sessions running on your computer from your phone.\n\nUnlike the official Claude mobile app which requires an Anthropic subscription, ccem works with any API key you've configured — your own key, a third-party provider, whatever. If it works in your ccem environment, it works from Telegram.\n\nThe magic is in Telegram's Forum Topics. Each Topic maps to a project directory on your machine — one Topic, one project, one persistent session. Your \"backend\" Topic talks to your backend repo, your \"frontend\" Topic talks to your frontend repo. Clean separation, no cross-talk.\n\nHere's how it works:\n\n1. **Configure your bot** — Enter your Telegram Bot Token and allowed user IDs in the ChatApp page\n2. **Bind projects** — Map each Forum Topic to a local project directory, with its own environment and permission mode\n3. **Send messages as commands** — Text the relevant Topic from your phone, ccem spawns (or reuses) a Claude Code session locally and forwards your message\n4. **Results stream back** — Claude's responses are pushed to Telegram in real time, with optional tool call visibility\n\nNeed Claude to run something while you're out? Just grab your phone.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow to create a Telegram Bot\u003c/b\u003e\u003c/summary\u003e\n\n1. Open Telegram and search for **@BotFather**\n2. Send `/newbot` and follow the prompts — give it a name and a username\n3. BotFather will reply with a **Bot Token** (looks like `123456:ABC-DEF...`) — copy it\n4. Create a Telegram group, go to group settings, enable **Topics** (this turns it into a Forum group)\n5. Add your bot to the group and make it an **admin** (so it can read and send messages in Topics)\n6. Get your **Chat ID** — send a message in the group, then visit `https://api.telegram.org/bot\u003cYOUR_TOKEN\u003e/getUpdates` and look for `\"chat\":{\"id\":-100xxxxxxxxxx}`\n7. Get your **User ID** — send a message to @userinfobot or check the `\"from\":{\"id\":...}` field in the same getUpdates response\n8. Paste the Bot Token, Chat ID, and your User ID into ccem's ChatApp → Telegram settings\n\n\u003c/details\u003e\n\n\u003e Feishu (Lark) integration is in development.\n\n## WeChat Remote Control\n\nNo Telegram? No problem. WeChat works too.\n\nThis one's been on the wishlist for a while. Telegram is great, but not everyone has it installed. WeChat, on the other hand — if you're in China, it's already on your phone.\n\nUnlike Telegram's Forum Topic approach, WeChat uses direct private chats. Send a message to the bot, ccem spawns a headless Claude Code session locally, runs it, and sends the result back. Straightforward.\n\nHere's how to set it up:\n\n1. **QR Login** — In Desktop's ChatApp → WeChat panel, click \"Scan Login QR\" and scan with your WeChat\n2. **Allowlist** — Enter the WeChat IDs that are allowed to control the bridge (leave empty for open access, but you probably shouldn't)\n3. **Send messages as commands** — Text the bot from WeChat, ccem creates a session and executes\n4. **Results stream back** — Claude's output is pushed back to your WeChat chat in real time\n\nPermission approval works too — when Claude needs your go-ahead on something, you'll get a prompt in WeChat. Reply `/approve` or `/deny`.\n\nJust like Telegram, Cron task results can also be pushed to WeChat. Wake up, check your WeChat, last night's PR review is already there.\n\n## Session Management — Multiple Models, Simultaneously\n\n\u003c!-- TODO: screenshot of Sessions page --\u003e\n![Sessions](./screenshots/sessions.webp)\n\nThis is where ccem differs from tools like [ccswitch](https://github.com/yibie/ccswitch). ccswitch switches your global environment — one model at a time. ccem lets you run multiple sessions with different models at the same time.\n\nWindow A running Opus for architecture work. Window B running Gemini writing frontend. Window C running DeepSeek for quick scripts. All at once, each with its own environment and permission mode.\n\n- Grid / list view toggle\n- Each session shows project dir, environment, permission mode, PID, source (Desktop / CLI / Telegram / Cron)\n- Per-session actions: focus, minimize, stop, close\n- Multi-window tiling in tmux mode\n- Orphan recovery: detect unmanaged Claude processes and take them over\n\n## Environment Management\n\n\u003c!-- TODO: screenshot of Environments page --\u003e\n![Environments](./screenshots/environments.webp)\n\nShares config with CLI, visual interface:\n\n- Card-based environment list with add / edit / delete\n- One-click preset filling\n- Remote config sync\n- Permission mode switching and default mode setting\n\n## Cron Tasks — Scheduled Automation with Push Notifications\n\n\u003c!-- TODO: screenshot of Cron Tasks page --\u003e\n![Cron Tasks](./screenshots/cron.webp)\n\nWrite a cron expression and a prompt, ccem runs Claude Code on schedule — and pushes the results straight to your Telegram.\n\nThis is the killer combo: Cron + ChatApp. Set up a nightly PR review, a daily test run, or a weekly security audit. When it finishes, the results land in your bound Telegram Topic automatically. You wake up, check your phone, done. No need to sit in front of your computer waiting.\n\nThink of it as your own self-hosted [OpenClaw](https://openclaw.com) — scheduled AI coding tasks with real-time notifications, running entirely on your machine.\n\n- **Templates** — PR Review, Test Runner, Doc Generation, Security Audit, Changelog — pick one and tweak\n- **AI generation** — Describe what you want in natural language, get a cron expression and prompt generated automatically\n- **Auto-push to ChatApp** — Results are sent to the bound Telegram Topic when the task completes (or fails)\n- **Run history** — Status, duration, and logs for every execution\n- **Next run preview** — See when the next few runs will fire\n- **Retry on failure** — One click to re-run failed tasks\n\n## Analytics — Claude Code \u0026 Codex in One View\n\n\u003c!-- TODO: screenshot of Analytics page with heatmap --\u003e\n![Analytics](./screenshots/analytics.webp)\n\nGitHub-style usage statistics for both Claude Code and Codex, unified in a single dashboard.\n\nSwitch between Claude, Codex, or combined view with one click. Finally see your total AI coding spend across both tools without juggling separate dashboards.\n\n- Daily activity heatmap\n- Token usage / cost trends by model\n- Consecutive active days streak\n- Trend arrows (up or down vs. last week)\n- Share poster: generate your AI Coding weekly report\n\n## Conversation History — Claude Code \u0026 Codex Together\n\nBrowse all past Claude Code and Codex conversations in one place. No more digging through separate log directories.\n\n- Filter by source: All / Claude / Codex\n- Grouped by project directory\n- `/compact` segmentation boundaries supported\n\n## Proxy Debug\n\nBuilt-in API request debugging panel:\n\n- Live traffic list: timestamp, method, URL, status code, size\n- Request/response detail viewer with JSON formatting + SSE stream detection\n- Separate upstream URL configuration for Claude and Codex\n\n## Skill Management\n\nSame functionality as CLI, different experience:\n\n- **Discover** — Streaming search, results appear as you type, one-click install\n- **Installed** — Installed list with one-click uninstall\n\n## Settings\n\n- Theme: light / dark / system\n- Language: Chinese / English\n- Default permission mode / default working directory\n- Terminal preference (iTerm2 / Terminal.app)\n- AI-enhanced mode: use a selected environment to power AI features (e.g., natural language cron task generation)\n- Dependency check: auto-detect whether ccem CLI / claude / codex / tmux are installed\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| Cmd+1~9 | Switch pages |\n| Cmd+Enter / Cmd+N | Launch Claude Code |\n| Cmd+, | Settings |\n| Cmd+Q | Quit |\n\n---\n\n# Data Storage\n\n| Path | Contents |\n|------|----------|\n| `~/.ccem/config.json` | Environment config (API keys encrypted) |\n| `~/.ccem/usage-cache.json` | Usage cache |\n| `~/.ccem/model-prices.json` | Price cache |\n| `.claude/settings.json` | Project permission config |\n| `.claude/skills/` | Installed skills |\n\n---\n\n# Tech Stack\n\n```\napps/cli/          # CLI — commander + inquirer + ink\napps/desktop/      # Desktop — Tauri 2.0 + React + Rust\npackages/core/     # Shared logic — presets, types, encryption\nserver/            # Remote config server\n```\n\npnpm workspaces monorepo.\n\n**CLI**: Commander.js, Inquirer.js, Ink (React for CLI), Conf\n\n**Desktop frontend**: React 18, TypeScript, Vite, Tailwind CSS, Zustand, shadcn/ui, Recharts\n\n**Desktop backend**: Rust + Tauri 2.0, window-vibrancy (native macOS glassmorphism)\n\n**i18n**: Chinese / English\n\n---\n\n## Contributing\n\nIssues and PRs are welcome!\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenuifx%2Fclaude-code-env-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenuifx%2Fclaude-code-env-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenuifx%2Fclaude-code-env-manager/lists"}