Skip to content

After the first task

Your first task ran (getting started). This page takes the next steps on a laptop. Delegate from your own agent, run attempts in parallel, take work from GitHub and write an environment for your repo.

Use the hangar skill

The hangar skill teaches your calling agent to turn a task or ticket into a cloud job or resumable session. It follows progress, handles questions, and reports changes with verification evidence.

Copy the skills/hangar/ folder into your client's configured skills directory, and reload its skills. For clients using the shared convention, that is ~/.agents/skills/hangar/. Connect that client to your hangar server (connect your client); installing the skill alone does not connect MCP. For example:

Use the hangar skill to work on ticket APP-42 in my repo. Use our configured Python environment, run the project's tests, and return a draft PR with the results.

This skill runs in the client that delegates work. The separate repo-conventions skill guides coding agents working inside sandboxes.

Parallel attempts

Once a single task works, ask your MCP client:

Create three claude-python sandboxes for my repo, each on its own work branch, using claude-api. Ask each agent to fix the same flaky test, run the project's tests, and report the changes and results. Let me review the attempts before removing the sandboxes.

To start from work you have already prepared, use snapshot_sandbox and fork_sandbox. Snapshot behavior varies by provider; see where it runs.

For a task that should produce a draft PR, use a job: jobs support verification commands, follow-ups, budgets and GitHub triggers. Sessions preserve a conversation and repository state across turns.

Take work from GitHub

uv run hangar setup github asks for a repo and a token and stores them. It then registers the repo's webhook and sends a test delivery. GitHub can't reach localhost, so on a laptop pass --webhook-url with a tunnel URL. See jobs: trigger from GitHub.

Your own environment

Save this as envs/my-service.yaml:

name: my-service
extends: python
harnesses: [claude-code]
default_harness: claude-code
credentials: [claude-api]
repo:
  url: https://github.com/YOUR-USER/YOUR-REPO.git
  branch: main
  setup: uv sync
agent_config:
  instructions: |
    Run the project's tests before finishing.
resources:
  cpus: 2
  memory_gb: 4
warm_pool: 1

Replace the repo URL, branch and setup command with your project's values, then build it with uv run hangar env build my-service. Ask your client to create a sandbox from my-service; it uses the configured repo and credential. warm_pool: 1 keeps one sandbox pre-started for faster claims.

Built-in foundations include bare, python, node, go and polyglot. Environments covers tools, skills, secrets, MCP servers and multiple agent choices.

Everyday commands

Run these from the hangar checkout:

What you want Command
List environments uv run hangar env list
List sandboxes uv run hangar sb ls
Run a command in a sandbox uv run hangar sb exec first-task "git status"
What waits on you uv run hangar inbox
Check client connections uv run hangar connect --list
Inspect settings and their sources uv run hangar config list
Freeze a good turn into a harness directory (harness locks) uv run hangar harness freeze job-1a2b3c4d --turn 1 --out ../harnesses/team-default
Check a harness directory against its lock uv run hangar harness check ../harnesses/team-default
Check setup uv run hangar doctor
Stop the local server uv run hangar down

For remote instances, run uv run hangar login https://YOUR-HANGAR-HOST once; fleet commands then use that server. Next: from a laptop to GKE and a team.