Log in / Sign up
← Home

Getting Started

Quick Start

The fastest way to get a dev server running for your repo — Claude installs the dependencies and starts your dev server for you, then snapshots the result so future launches are instant. You can run auto setup from the dashboard or from the CLI against any local repo:

npm install -g @typhons/cli
cd your-repo
typhons auto-build

That's it. typhons auto-build:

  1. Uploads your repo to a fresh dev server
  2. Walks you through a one-time Claude sign-in (opens a browser, you paste the auth code back)
  3. Has Claude read your README, install dependencies, and start your dev server
  4. Snapshots the result — next time, launch from that snapshot and everything is already running

When setup finishes you can press a to attach to the running Claude session and validate that the setup is complete. If there are any issues, ask Claude to fix them or change things directly using your shell, then re-snapshot the completely ready server. Any HTTP ports your app binds are exposed at https://<server-name>.d.typhons.dev:<port>.

Auto setup runs Claude in tmux - use tmux a to enter the tmux session, Ctrl+b then d to detach (exit the tmux session back to a shell), and PgUp (fn+up arrow on a laptop) to scroll the session (and then 'q' to exit scrolling mode).

Prefer to install dependencies yourself?

Skip auto-build and launch a default image from the dashboard instead. You'll SSH in and run whatever you need by hand:

ssh user.my-server@ssh.typhons.dev -A

git clone https://github.com/you/your-repo.git
cd your-repo && npm install
tmux new "npm run dev"

Then Save a snapshot from the dashboard so the next launch starts already-running. Snapshots include in-memory state — your web server will already be live in any new sandbox launched from the snapshot.

For fully scripted / repeatable builds (CI-style), see CLI repeatable build and Devcontainer below.

Starting a chat

Once you have a snapshot (from auto-build or any other path), typhons chat launches a fresh dev server from it, sends Claude your prompt, and drops you straight into the running session.

cd your-repo
typhons chat "add a /healthcheck endpoint that returns 200 OK"

If you don't pass a prompt, you'll be asked to type one — multi-line input works (Enter submits, Alt-Enter inserts a newline). If your current directory is a github repo, the picker defaults to the most recent snapshot for that repo.

Options

-i, --image NAMESnapshot to launch from (id, full name, or short name). Skips the picker.
-l, --latestSkip the picker; use the most recent snapshot for the current github repo.
-n, --name NAMEServer name (default: auto-generated).

typhons attach <name> drops back into an existing dev server (auto-reconnects on disconnect, including across sandbox pauses). Pass -s for a plain shell instead of Claude's tmux session.

Tips

Running Claude Code / Codex

Claude Code and Codex are pre-installed on all dev servers. A typical workflow:

# SSH in
ssh user.my-server@ssh.typhons.dev

# Start a tmux session so it persists if you disconnect
tmux new -s work

# Run Claude Code
claude --dangerously-skip-permissions

# Or Codex
codex --yolo

Port forwarding

Any port on your dev server is accessible over HTTPS at https://my-server.d.typhons.dev:PORT. This works for web apps, APIs, web sockets, etc.

Multiple Claude agents

Use tmux windows or panes to run multiple Claude sessions in parallel on the same dev server. Each gets its own shell and working directory.

Mobile access (iOS / Android)

You can access your dev server from your phone using any SSH app. Termius works well on both iOS and Android. Connect with:

  • Host: ssh.typhons.dev
  • Username: user.my-server
  • Auth: your SSH key

Once connected, use tmux a to pick up your existing Claude Code sessions.

Alternatively, you can use /remote-control in Claude to access the session from the Claude mobile app.

Cloning

Clone a running dev server to get an identical copy, including the in-memory state.

Let's say you're developing a new feature and think of another separate feature you want to build without interrupting the current AI agent. Just clone the server in a few seconds, ssh into the clone and ask Claude to build the 2nd feature. Your existing dev server will keep on going, while your new server runs completely independently (and can be tested independently on its own domain).

From the dashboard

Click the "Clone" button next to any running dev server.

From inside the dev server

# Clone the current dev server
clone

# Clone with a specific name
clone my-feature

You can also clone directly from Claude Code with !clone

Cloning snapshots the source dev server (which briefly pauses it), then creates a new dev server from that snapshot. The source resumes automatically once the snapshot is taken.

Cost-saving

Dev servers only run while you're actively using them — via SSH, through a web server running on the dev server, or while Claude or Codex is working. When it goes idle, it auto-pauses within 5 minutes.

It automatically resumes as soon as you SSH in or hit the web server, so it feels like it's always up, but you only pay when you're actively using it.

CLI repeatable build

auto-build is the easiest path. If instead you want a fully scripted, reproducible build (e.g. for CI, or because you already know exactly what setup to run), use typhons build. It copies your repo into a dev server, runs a setup script, and saves the result as a launchable image.

npm install -g @typhons/cli

Basic example

cd your-repo

typhons build \
  --image node:20 \
  --script "npm install" \
  --startup-script "npm run dev" \
  --cpus 2 \
  --memory 4 \
  .

This will:

  1. Start from the node:20 Docker image
  2. Copy your repo into /home/user/your-repo
  3. Run npm install during the build (one-time setup)
  4. Run npm run dev and then snapshot the machine. Any new dev server launched from this image will already have npm run dev running

Important: by default, everything from your local repo is copied to the dev server. Use --ignore or --ignore-file to exclude things (e.g. large, cached files)

Options

--image NAMEDocker base image (e.g. node:20, python:3.12-slim)
--script CMDSetup script — runs once during build (e.g. npm install)
--startup-script CMDStartup script — runs every boot (e.g. npm run dev)
-t, --tag TAGImage name/tag (default: timestamp)
--ssh-key PATHSSH public key for access (or set SSH_PUBLIC_KEY env)
--ignore PATTERNSComma-separated globs to exclude from the repo copy (gitignore-style)
--ignore-file PATHFile with ignore patterns, one per line (like .gitignore)
--cpu COUNTCPUs for the build (default: 1)
--memory GBMemory in GB for the build (default: 4)
--user USERUser name to use for main account on the server (default is user)

Run typhons build -h for the full help.

Devcontainer

If your repo has a .devcontainer/devcontainer.json, typhons build can use it directly:

cd your-repo
typhons build --devcontainer .

This respects your devcontainer config including the Docker image or Compose setup, postCreateCommand, postStartCommand, forwarded ports, and remote user. Use this if you already have a devcontainer defined for your repo or want a multi-container setup.