All commands
Every hi command and option in one place.
Overview
| Command | Does |
|---|---|
hi compute … |
Rent and use remote machines; see below |
hi login <hf|colab|runpod|shadeform> |
Sign in to a compute provider |
hi connect <server> |
Join a hi server; status, key |
hi disconnect |
Leave it; use your own keys again |
hi data … |
Download your team’s Hugging Face datasets, models, and buckets; see below |
hi server … |
Run the server that brokers compute; see below |
hi init [<template> <dir>] |
Start a project from a template; --update, --adopt |
hi q [<what you want>] |
Ask for a shell command, or chat; see below |
hi shell-init bash|zsh |
Shell integration for hi q |
hi agent … |
Hand a task to Claude Code, Codex, or Hermes in a box; see below |
hi team … |
A virtual team of agents in a Slack channel; see below |
hi box … |
Run a shell or a command in a rootless box; see below |
hi bundle … |
Bundles of skills for hi agent --bundle; see below |
hi skill … |
Find, install, and update agent skills; see below |
hi install |
Choose workstation software from a menu |
hi uninstall <tool>… |
Remove workstation software |
hi verify strix |
Check a Strix Halo workstation |
hi net |
Enroll in NetBird; status, down, reconnect |
hi net expose <port> |
A local service on a temporary public address; see below |
hi adduser <name> |
Create a user with GPU access |
hi update [--check] [--version <tag>] [--restart|--no-restart] |
Update hi; offer to restart a hi server service still on the old version |
hi version, hi help |
Version and help |
hi compute
| Command | Does |
|---|---|
hi compute |
Guided menu in a terminal; help otherwise |
hi compute providers |
Which providers are signed in, and what is missing |
hi compute hardware [--on <provider>] [--community] |
Hardware, memory, and prices; --community lists RunPod Community Cloud |
hi compute billing [<account> | --clear] |
Who pays on Hugging Face, and the Colab balance |
hi compute up [options] |
Start an instance |
hi compute run [options] <script.py> [-- args] |
Run a Python script to completion |
hi compute run [options] <image> -- <command> |
Run a container command to completion (Hugging Face) |
hi compute serve [options] <recipe | owner/repo-GGUF> |
Serve a GGUF model with an OpenAI-compatible API |
hi compute ls |
Everything running, with limits |
hi compute status <name> |
One run or instance in detail |
hi compute ssh <name> [-- <command>] |
Shell, or one command |
hi compute tunnel <name> <port>[:<local>] |
Forward a remote port to 127.0.0.1 |
hi compute logs <name> [--follow] [-n <lines>] |
Output and setup logs |
hi compute wait <name>… |
Wait for runs to end; exits with their status |
hi compute stop [<name> | --all] [--yes] |
Stop and release; without a name, pick from a list |
hi compute proxy <name> |
The SSH transport, for ProxyCommand (Colab) |
hi compute requests [<id> [--wait] [--timeout <d>]] [--json] |
Your requests to the hi server; exit 3 pending, 4 denied |
hi compute extend <name> <duration> [--reason <r>] [--no-wait] |
Ask the hi server for more time |
hi compute live |
Live view of your managed machines |
Options for up, run, and serve
| Option | up | run | serve | Meaning |
|---|---|---|---|---|
--on <provider> |
✓ | ✓ | ✓ | colab, hf, runpod, or shadeform |
--gpu <hardware> |
✓ | ✓ | ✓ | Hardware name from hi compute hardware |
--name <name> |
✓ | ✓ | ✓ | Name for later commands |
--max <duration> |
✓ | ✓ | ✓ | Maximum lifetime: hours (2, 1.5), 30m, 2d, or none (asks first) |
--yes |
✓ | ✓ | ✓ | Skip the cost confirmation |
--dry-run |
✓ | ✓ | ✓ | Show the request; start nothing |
--reason <text> |
✓ | ✓ | Why you need it; approvers see it (managed providers) | |
--no-wait |
✓ | Return while approval is pending; exit 3 (managed providers) | ||
--namespace <ns> |
✓ | ✓ | ✓ | Hugging Face account to bill this once |
--high-mem |
✓ | ✓ | High-RAM machine (Colab) | |
--image <image> |
✓ | Container image (Hugging Face, RunPod) | ||
--env KEY=VALUE |
✓ | Environment variable; repeatable | ||
--secret KEY |
✓ | Encrypted secret from your shell (Hugging Face) | ||
--data <org>/<name>[/<pattern>] |
✓ | ✓ | run: your team’s data into data/<name> first. up (RunPod, Shadeform; whole repositories): HF_ENDPOINT and HF_TOKEN in the machine’s shells (hi data) |
|
--detach |
✓ | Return after starting (Hugging Face) | ||
--quant <quant> |
✓ | GGUF quantization, such as Q4_K_M |
||
--ctx <tokens> |
✓ | Context length | ||
--alias <id> |
✓ | Model name in the API | ||
--args "<args>" |
✓ | Extra llama-server arguments |
||
--port <port> |
✓ | Local port for the Colab tunnel; default 8080 |
Defaults: --gpu is the provider’s cheapest CPU; --max is 4h for up and
serve and 1h for run, at most 24h on Colab. Flags may come before or
after names for logs, serve, stop, and billing.
hi connect and hi server
See Managed compute for your team.
| Command | Does |
|---|---|
hi connect <server> [--user <name>] [--no-wait] |
Enroll this device and wait for approval |
hi connect <server> --agent <name> --owner <user> |
Enroll an agent that runs on its own |
hi connect status |
Server, user, group, and managed providers |
hi connect key |
This device’s public key, for an admin to pre-approve |
hi connect slack <code> |
Link your Slack account, with the code from /hi link |
hi disconnect |
Forget the server and delete the device key |
hi server init [--listen <addr>] |
Create the server’s state |
hi server run |
Serve clients |
hi server provider add|remove|list [<provider>] |
Provider keys (RunPod) |
hi server user add <u> --group <g> [--key <k>] |
Add a user; --key pre-approves a device |
hi server user remove <u>, user list |
Remove a user and their devices; list users |
hi server requests [--all] |
What is waiting for a decision |
hi server approve <id> [--group <g>] |
Approve an enrollment or compute request |
hi server deny <id> [--reason <r>] |
Deny a request |
hi server ls |
Everything running, for every user |
hi server stop <name> | --user <u> | --all |
Stop instances |
hi server audit [--since <d>] |
The audit log |
hi server slack setup, slack manifest |
Connect a Slack app; print its manifest |
hi server approvers add <id> --name <user> |
Let a Slack member approve and stop; remove, list |
hi server policy show|edit|example|check |
Group limits, auto-approve, and budgets |
hi server spend [--since <d>] |
Spend per user and group, compute and models |
hi server ai [set [--url <u>] [--model <m>] [--no-key]|off|remove] |
Pass hi q’s requests to OpenRouter with your team’s key |
hi server live [--wall] [--names full] [--reasons] |
Live dashboard; --wall is read-only |
sudo hi server wall setup|add|remove|list |
Show the wall on screens over SSH |
hi server viewer add <name> --key <k> |
A device that may only watch |
hi server templates add <name> <git-url> [--ref <r>] |
Serve a private repository’s templates and skills |
hi server templates list|sync|remove [<name>] |
Show, fetch now, or stop serving template sources |
hi server templates rename <name> <new-name> |
Rename a source; keeps its token and history |
hi server data |
Menu: Hugging Face organizations for hi data |
hi server data add <org>... [--token-file <f>] |
Serve organizations’ datasets, models, and buckets; asks for a read token |
hi server data list|test|remove [<org>] |
Show, check, or stop serving organizations |
hi server expose [stop] |
The public address cloud runs reach hi data through, and the runs using it; close it |
hi server expose revoke <run> |
End one cloud run’s token now |
hi data
Needs a connected server with organizations added, and hf
(pip install -U huggingface_hub). The Hugging Face token stays on the
server; hf runs with HF_ENDPOINT pointing to it.
| Command | Does |
|---|---|
hi data |
Search by words, pick a dataset or model, and download it |
hi data ls [<org>] [--kind dataset|model|bucket] [--json] |
What you may download |
hi data info <org>/<name> |
Size, largest files, and last update |
hi data get <org>/<name> [--to <dir>] |
Download it with hf (buckets with hf buckets sync); default folder ./data/<name> |
↳ --revision <rev>, --include <glob>, --exclude <glob> |
A branch, tag, or commit; filters, repeatable |
↳ --no-record |
Don’t record it in the project’s .hi5/data.json |
hi data get |
In a project: everything .hi5/data.json records, at the recorded commits |
hi data run -- <command> |
Run a command that reads your team’s data directly |
hi data env |
HF_ENDPOINT and HF_TOKEN for eval in a shell |
Put dataset:, model:, or bucket: in front when several share a name.
Buckets have no revisions. A group’s
data patterns in policy (["hifinab/*"]) limit what it sees; without
them it sees everything.
hi login
hi login hf # hf auth login, then hf auth whoami
hi login colab # the Colab CLI's browser sign-in, then the balance
hi login runpod # asks for the API key, checks it, saves it in ~/.runpod/config.toml
hi login shadeform # asks for the API key, checks it, saves it in ~/.config/hi/shadeform_key
hi init
hi init # choose a template, name, and directory
hi init python pricing-tools # create ./pricing-tools from the python template
hi init web . --name dashboard # apply the web template to this directory
hi init --list # the templates
hi init --update # bring this repository up to the current templates
hi init --update --check # change nothing; fail when it is behind (for CI)
hi init --adopt python # bring this existing repository under a template
| Option | Meaning |
|---|---|
--name <name> |
Project name; by default the directory’s name |
--dry-run |
Print the plan; write nothing |
--yes |
Do not ask for confirmation |
--no-setup |
Write the files; run no setup command |
--github <owner/repo> |
Also create a private GitHub repository and push |
--force |
With --update or --adopt: overwrite files hi owns even when edited by hand |
--strict |
With --check: fail when private layers can’t be checked |
Templates: python, web, service, pipeline, ml, and on a connected
device your team’s private ones.
hi q
| Command | Does |
|---|---|
hi q |
Chat: ask, run, and follow up; /clear, /context, /model, /exit or Ctrl-D |
hi q <what you want> |
Propose one command; Enter runs it, e edits, c copies, ? explains, Esc cancels |
hi q -c [question] |
Continue the last conversation |
<cmd> | hi q <question> |
Ask about piped output, up to 32 KB |
hi q --explain '<command>' |
Explain a command without running it |
hi q --print <question> |
Print only the command, for scripts |
hi q --setup |
Choose the model (Claude Code, OpenRouter, an OpenAI-compatible endpoint, or an Anthropic key), and set up the shell |
hi q --status |
The model in use, where it came from, and the shell integration |
hi q --context |
What is sent with each question |
hi shell-init bash|zsh |
The shell integration script, for eval in an rc file |
Everything from the first word that doesn’t start with - is the
question, so hi q status of the log file asks the model. hi’s own options
go before it; put -- before a question that starts with a dash.
Options: --provider server|openai|openrouter|anthropic|claude and --model <name>
for one question or chat, --no-context to send only the question, and
--yes to run read-only commands without asking. Dangerous commands always
need yes typed. See Ask for a command.
hi agent
| Command | Does |
|---|---|
hi agent [claude|codex] "<task>" |
Run a task in a box on a new worktree (outside git, in the folder itself) and wait for the report; without a name, the first agent installed and signed in |
hi agent [claude|codex] <brief.md> |
The task is the file’s contents; - reads it from stdin |
hi agent claude|codex |
An interactive session in a box, without permission prompts |
hi agent wait <name> [--json] |
Wait for a run and print its report |
hi agent best-of <n> "<task>" |
The same task in n boxes (2 to 8) at once; hi checks each and ranks them |
hi agent best-of ls [--json] |
Best-of runs and their state |
hi agent best-of show <run> [--full] |
The table again; --full adds each box’s diff |
hi agent best-of keep <run> <box> |
Keep one box and its branch, remove the others |
hi agent best-of rm <run> |
Remove every box of a run and its branches |
hi agent best-of <n> --score "<cmd>" --lower|--higher --rounds <n>|forever "<task>" |
Rounds: each starts from the best so far, and hi commits a result only when its score beats it |
hi agent best-of watch <run> |
Follow a run with rounds; q leaves the view, the run goes on |
hi agent best-of stop <run> [--now] |
Stop after the current round; --now removes its boxes too |
hi agent best-of resume <run> |
Go on from the best so far; --rounds, --for, --budget give more |
hi agent token claude |
Store a long-lived token from claude setup-token |
Options: --detach to start and return, --json for the report as JSON on
stdout, --task-file <path> for a task file whose name doesn’t end in
.md, --model <model> for the agent’s model (without it, the one in your
own Claude Code, Codex, or Hermes settings, else opus for Claude Code),
--bundle a,b for bundles of skills and the tools they need, and the box
options below. A brief’s front matter can set agent, model, bundles,
network, allow, data, and gpu. Exits with 0 when the agent is done and
1 when it failed. See Hand tasks to agents.
best-of also takes --agents claude,codex (taken in turn), --check
"<command>" (default: make check), --max <duration> per agent, and
--yes to start without asking; it exits with 1 when no box passed. With
rounds: --for <duration>, --budget <dollars>, --patience <n>,
--min-gain <number>, --edit a,b for the files an agent may change, and
--then "<command>", run on this machine when the rounds end. To keep a
gain only if it also holds on data agents never see: --validate
"<command>" (run by hi after each round in a container without network or
.git, with only the --edit files from the box; needs --edit),
--validate-data <dir> (a folder outside the project, read-only at
/box/data there), and --validate-slack <number> (how much worse than the
highest validation so far the number may be; default 0); a winner that fails is
rejected. --folds <n> --fold "<command>" walks the validation window
forward through n folds, after --fold-every <k> rounds or when
--patience runs out; each fold starts from a new baseline. See Keep only gains that hold.
See Autoresearch.
hi team
See Run a team in Slack.
| Command | What it does |
|---|---|
hi team new <name> [--from <file.json>] |
Set up a team: its Slack app, channel, people, members, and code |
hi team up [<name>] |
Start or restart it as a systemd user service, also at boot; without a name, pick it from a list |
hi team down <name> |
Stop it; its folder stays |
hi team rm [<name>] [--keep-folder] |
Stop it and remove it from this machine: its service, its members’ boxes, and its folder; --keep-folder keeps the folder |
hi team ls |
Teams on this machine |
hi team status <name> |
Up or down, its members, production’s version and what dev has on top of it, the open ideas, and its latest tasks |
hi team logs <name> [<task>] [-f] |
The lead’s log, or a task’s; -f follows it |
hi team channel <name> [--since 2h] |
What was said in the team’s channel, threads and shared files included |
hi team key <name> openrouter [--unset] |
Give the team an OpenRouter key of its own (asked for, never an argument), or go back to this machine’s; no box holds it |
hi team key <name> slack |
The Slack app’s bot and app tokens again, after Slack gave new ones: asked for and checked, Enter keeps one; a running team restarts with them |
hi team env <name> [KEY=VALUE | KEY | --unset KEY]... |
The settings the team’s app boxes get as environment variables: list their names, add or change them (KEY alone asks for the value), or remove one |
hi team helper <name> [preview|production on|off] |
Whether the app’s pages have the helper, a chat with the lead beside the page, or turn it on or off for an address from the next page load |
hi team snapshot <name> |
Take a snapshot now of the lead’s memory, the team’s record, and production’s data; the team keeps running. It takes one daily and before every release too |
hi team snapshots <name> |
List the snapshots: when, why, their size, and whether they are offsite |
hi team restore <name> <snapshot> [--code] [--yes] |
Put the team back as it was in a snapshot (its ID, latest, v3 for the one before v3, or a day); asks first, and takes a snapshot of now so it can be undone; --code puts repo/ back too |
hi team rollback <name> v3 [--code-only] [--yes] |
Put production back on v3 with its data as v3 left it (or --code-only); what was entered since is kept in a snapshot. The lead runs hi team rollback v3 --approval <id> with an owner’s yes |
hi team backups <name> [--offsite s3:https://<host>/<bucket> [--region <r>] | --offsite off] [--keep d,w,m] [--show-key] |
Where snapshots are kept and for how long; copy them to an S3-compatible bucket too; print the key they are encrypted with |
hi team manifest <name> |
The Slack app manifest again |
hi team github <name> <owner/repo> |
Put the project on GitHub (a new private repository, or an empty one); the team pushes every merge there |
In its box, the lead runs hi team task <role> <brief.md> [--approval <message id> | --small | --on <task>] [--attach <file>]...,
review <task>, wait <task>, show <task>, tasks, merge <task>,
stop <task>, env (the names of the app’s settings), channel [--since 2h | --new],
web (the chats and feedback in the app), web show <chat|feedback>, web post <chat> <text|-> [--attach <file>]..., web questions (what people asked the app’s help), web link --user <member ID> (DM someone their private links, as /hi does)
(a message in a chat after its answer), and preview [<task> | production] [--port <n>] [--max <duration>] or
preview stop, which runs the project in an app box and puts it on a
temporary address with hi net expose. versions shows production’s
version and what dev has on top of it; release --approval <id> --notes <file>
puts dev into production as the next version once an owner says yes, and
release v2 --approval <id> puts production back on v2; discard <task>
drops an idea that isn’t merged, and discard dev --approval <id> sets
dev’s code back to production’s.
hi box
| Command | Does |
|---|---|
hi box shell |
A shell in a box for this project |
hi box run -- <command> |
One command; exits with its status |
hi box ls |
Boxes, state, branch, and changes |
hi box attach <name> |
Follow an agent, or take over a box’s terminal |
hi box diff <name> [--full] |
Commits and files, flagging files that run on the host |
hi box allow <name> [<domain>] |
Allow a domain, or list what was refused |
hi box stop|rm <name> [--force] |
Stop, or remove the box and its worktree |
hi box rm --all [--force] [--yes] |
Remove every box after one question |
Options when starting: --name, --network locked|dev|open,
--allow <domain>, --gpu, --data (your team’s data through the hi server),
--worktree, --here, --image, --memory, and --bundle a,b. A
project’s devcontainer.json can set network, domains, gpu, data,
and bundles under customizations.hi. See
Run code in a box.
hi bundle
| Command | Does |
|---|---|
hi bundle ls [--json] |
Bundles for --bundle, and where each comes from |
hi bundle show <name> |
Its skills, at which commit, what each needs, and its network |
hi bundle prune [--all] |
Remove bundle images unused for 30 days (--all: every unused one) |
Bundles come from hi itself, your team’s template sources on a hi server,
and ~/.local/share/hi/bundles (or HI_BUNDLES_DIR); a later one wins on
a name. See Bundles.
hi skill
| Command | Does |
|---|---|
hi skills |
In a terminal: search skills.sh, browse, and pick |
hi skill find <query> |
Search skills.sh: installs, makers, and audits |
hi skill add <source> |
Install from owner/repo, owner/repo/skill, a git URL, or a folder |
hi skill add hi |
Write the hi skill (plain hi skill does too, without a terminal) |
hi skill ls |
Installed skills, their source, commit, and state |
hi skill show <name|source> |
Description, license, files, and audits |
hi skill update [name…] [--check] |
Move skills to their source’s newest commit |
hi skill update --bundles |
Move the skills in bundles/<name>.json to newer commits |
hi skill rm <name>… |
Remove skills |
hi skill --print |
Print the hi skill; write nothing |
Options: --global (your home folder), --skill a,b, --yes,
--accept-risk, --ref, --force, and --json. hi skills is the same
command. See Skills.
hi install and hi verify
hi install # menu: check to install, uncheck to remove
hi install --list # tool names, and which are installed
hi install claude gh # install or reinstall the named tools
hi install --all [strix] # every tool; Strix Halo support only when named
hi install strix # the menu with Strix Halo support checked
hi uninstall docker # remove the named tools
hi verify strix # the Strix report again, after a reboot
hi net
hi net # enroll; prompts for the key
hi net --setup-key-file <file> # enroll from a file only you can read
HI_NETBIRD_SETUP_KEY=… hi net # enroll from the environment
hi net status | down | reconnect
| Command | Does |
|---|---|
hi net expose <port> |
Expose localhost:<port> until --max or Ctrl+C |
↳ --max <duration> |
How long; default 1h, at most 24h |
↳ --link, --password <text>, --pin <6 digits>, --groups <g1,g2>, --public |
The lock: a generated password by default; --link puts a key in the link instead |
↳ --name <prefix>, --host <addr> |
The start of the address; where the service listens |
↳ --detach, --json |
Run in the background; print JSON |
hi net expose ls [--json] |
What this machine is exposing |
hi net expose stop <name> | --all |
Stop it now |
hi adduser
hi adduser <name> # Ubuntu adduser, plus the render and video groups