claude-code
Claude Code management tool for automatic credential synchronization to GitHub, session monitoring, and more.
Features
- π Automatic Credential Sync: Syncs Claude Code credentials to GitHub organization/repository secrets
- β° Smart Scheduling: Monitors token expiry and syncs 1 minute after new token is generated
- π― Multi-Target Support: Sync to multiple GitHub organizations and repositories simultaneously
- π Session Monitoring: Real-time session timer and status tracking with desktop notifications
- π§ Systemd User Service Integration: Runs as a background daemon with automatic startup and monitoring
- π High Performance: Written in Rust for minimal resource usage and maximum reliability
Installation
Option 1: Cargo Install (Recommended for Users)
# Install directly from source
# Add to PATH if not already
Option 2: Pre-built Binary (Coming Soon)
Download the latest release from GitHub Releases.
Option 3: From Source (Development)
# Clone the repository
# Build and install to ~/.cargo/bin
Option 4: Via NX (Contributors)
# From repository root
# Install to ~/.cargo/bin
Important: The binary must remain in a stable location for the daemon
service to work. If you move the binary after installing the service, run
claude-code service install again.
Prerequisites
- Rust 2024 Edition (rustc 1.80+)
- GitHub CLI (
gh) installed and authenticated - Claude Code installed and authenticated
- Linux/macOS with systemd (for daemon functionality)
Quick Start
- Install and Configure:
# Add GitHub organization
# Add GitHub repository
# Install and start daemon
- Check Status:
- Real-time Session Timer:
Commands
Session Management
claude-code status- Show comprehensive session and sync statusclaude-code timer- Real-time session timer with progress bar
Organization Management
claude-code org add <name> [--secret-name NAME]- Add GitHub organizationclaude-code org remove <name>- Remove organizationclaude-code org list- List configured organizations with availability
Repository Management
claude-code repo add <owner/repo> [--secret-name NAME]- Add repositoryclaude-code repo remove <owner/repo>- Remove repositoryclaude-code repo list- List configured repositories
Sync Operations
claude-code sync now- Force immediate credential syncclaude-code sync status- Show detailed sync status for all targetsclaude-code sync logs [--lines N]- View daemon logs
Service Management
claude-code service install- Install and start systemd user daemonclaude-code service uninstall [--keep-config]- Uninstall daemonclaude-code service start/stop/restart- Control daemonclaude-code service enable/disable- Control auto-start on login
Configuration
claude-code configure- Interactive configuration wizard (coming soon)
Configuration
Configuration is stored in ~/.goodiebag/claude-code/config.yml:
daemon:
log_level: info
sync_delay_after_expiry: 60 # seconds after token expiry
github:
organizations:
- name: deepbrainspace
secret_name: CLAUDE_CODE_TOKEN
- name: another-org
secret_name: CLAUDE_ACCESS_TOKEN
repositories:
- repo: user/special-repo
secret_name: CUSTOM_CLAUDE_TOKEN
notifications:
session_warnings: # minutes before expiry
sync_failures: true
Daemon Installation Details
The claude-code service install command:
- Creates Systemd Service: Installs
~/.config/systemd/user/claude-code-sync.service - References Current Binary: Uses the exact path of the currently running binary (no copying)
- User Service: Runs as a user service (no root privileges required)
- Auto-Start: Enables automatic startup on user login
- Security Sandboxing: Runs with restricted file system access
Service Location: ~/.config/systemd/user/claude-code-sync.service
Service Command: {binary_path} daemon Service Type: User service
(systemctl --user)
Manual Service Management
# View service status
# Control service directly
# View logs
# Remove service manually
How It Works
- Credential Monitoring: Daemon monitors
~/.claude/.credentials.jsonfor changes - Smart Timing: When token expires, waits 60 seconds for Claude Code to refresh it
- Automatic Sync: Detects new token and syncs to all configured GitHub targets
- Startup Recovery: Performs reconciliation check on startup to catch missed syncs
- Status Tracking: Maintains detailed sync status and error information per target
Architecture
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Claude Code βββββΆβ claude-code βββββΆβ GitHub Secrets β
β Credentials β β Daemon β β (Orgs & Repos) β
β ~/.claude/ β β (Systemd) β β β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Configuration β
β ~/.goodiebag/ β
β claude-code/ β
ββββββββββββββββββββ
Development
Building
# Check code
# Run tests
# Build optimized binary
# Run with NX
Testing
The project includes comprehensive test coverage:
- Unit Tests: Core functionality testing
- Integration Tests: End-to-end workflow testing
- Property Tests: Edge case validation
# Run all tests
# Run tests with coverage
# Run specific test module
Code Quality
# Lint with clippy
# Format code
# Check formatting
Troubleshooting
Check Daemon Status
View Detailed Logs
Manual Sync
Reset Configuration
Performance
- Binary Size: ~8MB (optimized)
- Memory Usage: ~5-10MB runtime
- CPU Usage: Near-zero when idle
- Startup Time: <100ms
- Sync Time: ~2-5 seconds per target
Security
- Credential Security: Read-only access to local Claude credentials
- GitHub Authentication: Uses authenticated
ghCLI for all operations - Audit Trail: All operations logged with timestamps and outcomes
- Systemd Sandboxing: Runs with minimal file system permissions
- No Network Storage: All data stored locally in user directories
Contributing
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
License
MIT License - see LICENSE for details.
Support
- Issues: GitHub Issues
- Documentation: This README and inline code documentation
- Community: Discussions in the repository