jamshid
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Gecti
- Code scan — Scanned 6 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Jamshid: CLI tool for managing multiple Claude Code profiles. Switch between personal Anthropic, enterprise keys, and OpenRouter configurations across projects.
Jamshid
Jamshid is a CLI tool for managing multiple Claude Code profiles. Switch between personal Anthropic, enterprise keys, and OpenRouter configurations across project directories without manual file copying or key leaks.
Naming Philosophy
Jamshid (also spelled Jamshēd) was a mythical Persian king who possessed a magical cup called the "Jam-e-Jam" (Cup of Jamshid). This cup was said to reveal all the realms of the world, allowing the king to see everything at once. Much like the magical cup that showed all realms, Jamshid the tool gives you visibility and control over all your Claude Code configurations across different projects and environments.
Features
- Profile Management: Create, delete, and list profiles
- Symlink Switching: Link profiles to project directories via symlinks (not copies)
- MCP Server Support: Automatically copies and links MCP server config files (
.mcp.json,mcp.json,mcp_servers.json) - Env Mode: Print
export CLAUDE_CONFIG_DIR=<path>for use witheval $(jamshid env <profile>)— no symlinks needed - Git Vault: Sync profiles across machines via git
- Interactive TUI: Full terminal UI with profile selection, text input, and sub-command navigation — all commands work through both CLI args and TUI
Installation
Homebrew (macOS / Linux)
brew tap PapaDanielVi/tap
brew install jamshid
Go Install
go install github.com/PapaDanielVi/jamshid@latest
Binary Download
Download the latest release for your platform from the Releases page.
Quick Start
# Create profiles
jamshid add personal
jamshid add work
# List profiles
jamshid list
# Link profile to current directory (creates symlinks)
cd /path/to/project
jamshid link work
# Or use env mode (no symlinks — eval sets CLAUDE_CONFIG_DIR in current shell)
eval $(jamshid env work)
claude
# Unlink
jamshid unlink
# Show help
jamshid help
# Check version
jamshid --version
CLI Reference
| Command | Description |
|---|---|
jamshid |
Launch interactive TUI |
jamshid add <name> |
Create new profile (imports settings + MCP configs) |
jamshid delete <name> |
Delete profile |
jamshid list |
List all profiles with their paths |
jamshid link [profile] |
Link profile to cwd via symlinks (interactive) |
jamshid unlink |
Remove profile symlinks from cwd |
jamshid env <profile> |
Set CLAUDE_CONFIG_DIR to the profile's config directory |
jamshid vault init <url> |
Configure git vault remote |
jamshid vault sync |
Trigger git sync |
jamshid version |
Print version |
jamshid help |
Show help message |
Examples
Import existing settings when creating a profile
cd /path/to/project/with/.claude/settings.local.json
jamshid add myproject
# Output: Found existing .claude/settings.local.json. Create profile from this? (y/n): y
# Output: Profile "myproject" created
When importing, Jamshid copies the entire .claude directory contents and looks for MCP config files (.mcp.json, mcp.json, mcp_servers.json) in the project root, copying them into the profile directory.
Link a profile (symlink mode)
cd /path/to/project
jamshid link work
# Creates symlinks:
# .claude/settings.local.json -> ~/.config/jamshid/profiles/work/.claude/settings.local.json
# .mcp.json -> ~/.config/jamshid/profiles/work/.mcp.json (if exists)
Use env mode (no symlinks)
# Set CLAUDE_CONFIG_DIR in the current shell via eval
eval $(jamshid env work)
# Output: (exports CLAUDE_CONFIG_DIR to the current shell)
# Now run Claude Code — it will use the profile's config directory
claude
# Or use it in one line:
eval $(jamshid env personal) && claude
Link a profile interactively
cd /path/to/project
jamshid link
# Output:
# Available profiles:
# 1: personal
# 2: work
# Select profile (number or name): 2
# Output: Linked profile "work" to /path/to/project
Interactive TUI
Run jamshid without arguments to launch the interactive terminal UI:
jamshid
The TUI provides a full interactive experience for all commands:
- Command Selection: Navigate and select from available commands
- Profile Selection: For commands that need a profile (delete, link, env), a profile list is shown
- Text Input: For commands that need text input (add, vault init), a text input prompt is shown
- Sub-command Navigation: Vault commands show a sub-command list (init, sync)
All commands work identically through both the TUI and direct CLI arguments.
TUI Navigation:
↑/↓orj/k: Navigate listsenter: Select itemesc: Go back (from profile/text input views)qorctrl+c: Quit
How It Works
Jamshid offers two ways to use profiles:
Symlink Mode (link / unlink)
- Profiles are stored in
~/.config/jamshid/profiles/<name>/ jamshid link <profile>creates symlinks:<cwd>/.claude/settings.local.json→~/.config/jamshid/profiles/<name>/.claude/settings.local.json<cwd>/.mcp.json→~/.config/jamshid/profiles/<name>/.mcp.json(if MCP configs exist)
- The active profile for a directory is tracked via a hash of the directory path
.gitignoreis automatically updated to excludesettings.local.json
Env Mode (env)
jamshid env <profile>printsexport CLAUDE_CONFIG_DIR=<path>to stdout- Use
eval $(jamshid env <profile>)to set the variable in your current shell - Claude Code reads
CLAUDE_CONFIG_DIRto find its config — no symlinks needed - This is ideal for users who prefer environment-based config switching
Project Structure
jamshid/
├── cmd/jamshid/ # Entry point
├── internal/
│ ├── pkg/
│ │ ├── config/ # Config load/save (atomic writes)
│ │ ├── constants/ # Shared constants
│ │ ├── gitignore/ # .gitignore management
│ │ ├── gitvault/ # Git vault sync
│ │ ├── hash/ # Directory hashing
│ │ ├── models/ # Profile and MCP server types
│ │ └── profile/ # Profile CRUD, symlinks, MCP, env
│ └── tui/ # Bubble Tea TUI
├── Formula/ # Homebrew formula
├── Makefile # Build, test, lint
├── .goreleaser.yaml # Release config
└── .github/workflows/ # CI/CD
Contributing
See CONTRIBUTING.md.
License
MIT
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi