Run Claude Code sessions remotely.
Catty spins up isolated machines on-demand, syncs your local workspace, and gives you a seamless terminal experience - as if Claude Code was running locally.
# Install (macOS only for now)
npm install -g @izalutski/catty
# Log in (required once)
catty login
# Start a session in your project directory
cd your-project
catty newThat's it. Your files are uploaded and Claude Code starts with full access to your codebase.
- No local setup - Claude Code runs in a pre-configured environment with all the tools it needs
- Workspace sync - Your current directory is automatically uploaded so Claude can work with your files
- Native terminal feel - Full PTY streaming means colors, vim, interactive prompts all work perfectly
- Isolated sessions - Each session runs in its own machine, fully isolated
catty login # Authenticate (required before first use)
catty logout # Remove stored credentials
catty new # Start Claude Code session (uploads current directory)
catty new --no-upload # Start without uploading workspace
catty connect <label> # Reconnect to an existing session (WIP)
catty list # List your sessions (shows labels)
catty stop <label> # Stop a session by label
catty version # Print version number- macOS (Intel or Apple Silicon)
- Node.js 16+
When you run catty new, your current directory is zipped and uploaded. The following are automatically excluded:
.git/directorynode_modules/- Python virtual environments (
.venv,venv) .envfiles- Anything in your
.gitignore
Maximum upload size: 100MB
catty loginauthenticates you via browser (one-time)catty newcreates an isolated machine- Your current directory is zipped (respecting
.gitignore) and uploaded - Claude Code starts with your workspace
- Terminal I/O is streamed over WebSocket - you interact as if it's local
- When done,
catty stopor Ctrl+C terminates the session
"Not logged in" error: Run catty login first.
Session won't start: Check your internet connection and try again. If the problem persists, try catty logout then catty login.
Files not appearing: Check that your workspace is under 100MB and files aren't gitignored.
Custom domain - Move away from *.fly.dev URLs✓Persistent storage - PostgreSQL for sessions and users✓Usage metering - Token counting via proxy✓- Session reconnect - Reconnect to existing sessions via
catty connect <label>(WIP - DB done, reconnect buggy) - Progress indicators - Progress bars for uploads and other long operations
- Workspace sync-back - Stream file changes from remote session back to local
- Documentation site - Comprehensive docs with Mintlify
- Stripe billing - Connect usage tracking to payments, free tier + subscription ($25/mo target)
- Multi-key support - Pool of API keys for handling load spikes
See AGENTS.md for architecture details, deployment instructions, and contribution guidelines.
MIT