Create and manage isolated Docker workspaces on your tailnet with Claude Code and OpenCode pre-installed...
Perry runs a local agent that creates isolated Docker workspaces and advertises them on your tailnet. Each workspace has coding agents preinstalled and is reachable via CLI, web UI, or SSH.
# Install
curl -fsSL https://raw.githubusercontent.com/gricha/perry/main/install.sh | bash
# Run the agent
perry agent run
# Point your CLI at the agent (one-time)
perry config agent <hostname>
# Create a workspace (optional clone)
perry start my-proj --clone git@github.com:user/repo.git
# Shell into it
perry shell my-proj
Expected behavior:
perry agent run starts a local daemon.perry start creates a workspace-my-proj container and registers it on your tailnet.perry shell opens an interactive shell inside the workspace.# Attach via CLI
opencode attach http://my-proj:4096
Expected behavior:
http://<workspace>:4096 from any device on the tailnet.Gotchas:
:4096 is unreachable, verify tailnet connectivity and that the workspace is running.# Run from a workspace shell
perry shell my-proj
claude
Expected behavior:
Gotchas:
ssh workspace@my-proj
Expected behavior:
workspace and the hostname is the workspace name (e.g., my-proj).Gotchas:
workspace, not part of the hostname. Use ssh workspace@<name>, not ssh workspace-<name>.# List workspaces
perry list
# Stop a workspace
perry stop my-proj
# Remove a workspace
perry remove my-proj
workspace-<name>.workspace-internal-<name>.