CLI

Sync your Hamster Briefs, Tasks, and skills into the repository your AI coding tools work in, and run Delivery commands from the terminal.

Overview

The Hamster CLI is a single Go binary that turns your Hamster workspace into local markdown your AI coding tools can read directly. In a repository, it writes a .hamster/ projection, reusing the nearest existing one or creating one at the repository root, and keeps ~/.hamster/ as the user-level cache. A one-shot sync for a Brief UUID, slug, or full Hamster URL syncs only that Brief.

Install the CLI

The Hamster plugin setup skill installs the CLI if it's missing. This command is for a terminal or CI without a plugin.

curl -fsSL https://tryhamster.com/cli/install | bash

Each project-context sync also generates .claude/skills/hamster-project-context/SKILL.md under the selected base for Claude Code. This context skill does not install the Hamster plugin or create Ask and Ship. Separately, hamster skills sync maintains shared workspace skills under .agents/skills/ and can link them into agent-specific skill directories.

The CLI is a sync engine, not an editor. Editing Briefs, Tasks, and skills happens in Hamster (or, for skills, optionally in your repo with bidirectional sync). Supported CLI write commands let agents update task status and create subtasks from the terminal. The CLI's job is to make that content available to your coding tools. Use it to pull live content before Delivery, update Task status in bulk, create Briefs from your build pipeline, or ask your coding agent for the next unblocked Task and Initiative health against the same live workspace your team sees in Hamster.

The CLI and MCP Server overlap, but neither replaces the other: most MCP tools have a CLI command, and Available Tools lists the few that are MCP-only. In the Hamster plugin, Ask calls the hosted MCP Server and Ship drives the CLI. The CLI owns local-only workflows such as sync, terminal chat, and the TUI.

What's in this section

  • CLI Sync — Refresh the .hamster/ projection you are in, or pull one Brief by UUID, slug, or URL
  • CLI Authentication — Install the CLI and connect it to your account
  • Using the CLI — The terminal dashboard, everyday commands, and example prompts for working with your coding agent

Common Commands

CommandWhat it does
hamster auth loginBrowser sign-in; stores your session in your OS keychain
hamster initCreate the repository's .hamster/ projection, pick a team, and run the first sync
hamster sync [identifier]Refresh the .hamster/ projection you are in, or pass a Brief UUID, slug, or full Hamster URL to sync only that Brief
hamster sync --watchKeep the .hamster/ projection current; Brief-scoped sync does not support watch mode
hamster team list, hamster team switch, hamster team membersList teams, select the active team, or inspect its members
hamster brief create --title "Title"Create a Brief from the terminal
hamster brief plan <id-or-slug> --generateStart Plan generation for a Brief
hamster brief deliver <id-or-slug>Start Delivery for a Brief
hamster task status <id> <status>Move a Task to a new status
hamster brief update <id-or-slug> --owner <user-uuid>Update brief ownership to a specific user
hamster goal list --status archivedList archived goals; without this filter, the command lists non-archived goals
hamster initiative listList active, non-archived initiatives
hamster initiative archive <id>Archive an initiative so it no longer appears in initiative list
hamster note list --include-archivedList Notes, including archived ones; without a filter, the command lists non-archived notes
hamster note update <id> --archiveArchive a Note, or change its title, description, or body
hamster search <query>Search Briefs, Notes, Initiatives, Goals, Documents, and Tasks by name
hamster skills syncBidirectional skill sync — pull updates and push local edits
hamster skills agentsPick which AI agents (Claude Code, Continue, Windsurf, …) get symlinks to .agents/skills/
hamster chat "<request>"Ask Hamster a question or take a workspace action from the terminal

Run hamster --help for the full command tree. Most commands pair with an MCP Server tool, so you can use them in scripts and automation the same way an agent would call MCP.

Chat from the Terminal

Use hamster chat to ask questions and take supported workspace actions without leaving the shell. Use --continue when the next request depends on the previous answer.

Responses render Markdown, and workspace references open as clickable links.

hamster chat "List the Briefs assigned to me and show which are approved."
hamster chat --continue "Generate a Plan for each Brief that is missing one. Do not overwrite existing Plans."

When asked to generate missing Plans, Hamster creates each missing Plan and leaves existing Plans unchanged.

Notes from the Terminal

Use hamster note to list, read, create, and update Notes:

  • hamster note list — Lists non-archived notes. --search matches the title and description without case sensitivity, and --owner <user-uuid> or --assigned-to-me filter by assignee. --archived lists only archived notes, and --include-archived lists both. Page through results with --limit (default 50, max 200) and --offset.
  • hamster note get <id> — Shows the note's title and description. Add --content to print the body as markdown.
  • hamster note create --title "Title" — Creates a note. Add --description and --content to fill it in.
  • hamster note update <id> — Changes only the fields you pass: --title, --description, --content, or --archive. --content replaces the body, and an empty value clears it. --archive=false unarchives the note.

Pass - to --content to read the body from stdin:

hamster note update <id> --title "New title"
echo "## Replaced body" | hamster note update <id> --content -
hamster note update <id> --archive

Skills Sync

The CLI keeps your shared agent skills in sync between your repo and your workspace. hamster skills sync runs in both directions by default:

  • Pull — Fetches new, updated, or removed skills from Hamster. A TUI selector lets you pick which to apply.
  • Push — Detects skills you (or an AI agent) have edited locally and offers to send them back. Conflicts surface a [K]eep local / [U]se remote / [S]kip prompt before anything is overwritten.
  • Asset-aware — Per-file SHA-256 fingerprints catch changes to bundled references and assets, not just the SKILL.md body.

If your IDE or agent expects skills under its own path (.claude/skills, .continue/skills, .windsurf/skills, etc.) instead of the universal .agents/skills/, run hamster skills agents to pick which directories should symlink to the canonical location. Hamster maintains symlinks safely — it never deletes the canonical data even if an agent directory was previously a symlink.

hamster skills sync --pull-only and --push-only flags are available when you want to scope the sync to one direction.

Plugin Skills

Ask and Ship come from the Hamster plugin, not from hamster sync. Ask falls back to hamster chat when the hosted MCP Server is unavailable and the CLI is installed and signed in, and Ship works from the synced .hamster/ context. See Plugin Skills for how to start them and what they accept.

Where the CLI Runs

The same binary works in two contexts:

  1. Your local machine — Interactive auth, browser login, OS keychain storage.
  2. CI pipelines — Set HAMSTER_ACCOUNT_ID and authenticate with an access token environment variable to skip every prompt.

Auth credentials live in your OS keychain by default (macOS Keychain, Windows Credential Manager, or the Linux Secret Service). On WSL or headless setups without a keychain, the CLI stores them in ~/.hamster/auth.json, protected by user-only directory and file permissions.

Tips

  • Pass a Brief slug, UUID, or even a full tryhamster.com/... URL straight into hamster sync — the CLI parses all three, syncs only that Brief, and reuses the nearest existing projection.
  • .hamster/ and .claude/skills/hamster-project-context/ are git-ignored by default — each carries its own .gitignore, because they are generated and account-specific. Delete that .gitignore if your team wants the synced markdown tracked in git.
  • Run hamster sync --watch in a side terminal during a session — your AI agent always sees the latest Brief and Task state without you needing to remember to re-sync.
  • Moving between client workspaces? See the Tips in CLI Sync for switching teams.
  • The CLI checks GitHub Releases for updates on a TTL — when a new version is available, you will see an inline notice on the next command.