1pub fn print_usage() {
3 println!(
4 r#"Usage: start [options] [--] <command> [args...]
5 start <command> [args...]
6 start --status <uuid> [--output-format <format>]
7 start --list [--running] [--output-format <format>]
8 start --upload-log <uuid-or-session-name>
9 start --stop <uuid-or-session-name>
10 start --terminate <uuid-or-session-name>
11 start --attach <uuid-or-session-name> [--read-only]
12 start --resume <uuid-or-session-name> [-- <command>]
13 start --resume-all [--output-format <format>]
14
15Options:
16 --isolated, --isolation, -i <env> Run in isolated environment (screen, tmux, docker, ssh)
17 --attached, -a Run in attached mode (foreground)
18 --detached, -d Run in detached mode (background)
19 --session, -s <name> Session name for isolation
20 --session-id <uuid> Session UUID for tracking (auto-generated if not provided)
21 --session-name <uuid> Alias for --session-id
22 --image <image> Docker image (optional, defaults to OS-matched image)
23 --volume, -v <spec> Docker bind mount/volume host:container[:mode] (repeatable, docker only)
24 --mount <spec> Docker --mount spec (repeatable, docker only)
25 --env, -e <KEY=VALUE> Environment variable for docker container (repeatable, docker only)
26 --privileged Run docker container in privileged mode (docker only)
27 --network <name> Connect to a named network (repeatable, docker only)
28 --network-alias <alias> Add alias to the first network (repeatable, docker only)
29 --on-kill-resume <N> Resume a killed (exit 137 / OOM) detached docker session up to N times
30 --recovery-command <cmd> Command to run in the same container on such a resume
31 --endpoint <endpoint> SSH endpoint (required for ssh isolation, e.g., user@host)
32 --isolated-user, -u [name] Create isolated user with same permissions
33 --keep-user Keep isolated user after command completes
34 --keep-alive, -k Keep isolation environment alive after command exits
35 --auto-remove-docker-container Always remove docker container after exit (compatibility alias)
36 --always-cleanup-container Always remove docker container after exit
37 --keep-container Keep docker container filesystem after exit
38 --keep-container-on-fail Remove successful docker containers, keep failed or OOM-killed ones
39 --shell <shell> Shell to use in isolation environments: auto, bash, zsh, sh (default: auto)
40 --use-command-stream Use command-stream library for execution (experimental)
41 --status <id> Show status of execution by UUID or session name (--output-format: links-notation|json|text)
42 --list List all tracked executions (--output-format: links-notation|json|text)
43 --running With --list, only report executions that are still running
44 --upload-log <id> Upload the stored log for an execution UUID or session name
45 --stop <id> Ask a detached isolated execution to stop gracefully
46 --terminate <id> Terminate a detached isolated execution immediately
47 --attach <id> Attach to a running detached isolated execution
48 --read-only With --attach, follow output without sending input
49 --resume <id> Restart a stopped detached execution in the same environment
50 (append -- <command> to run a different command there)
51 --resume-all Re-attach or reconcile every execution still marked running
52 --cleanup Clean up stale "executing" records (crashed/killed processes)
53 --cleanup-dry-run Show stale records that would be cleaned up (without cleaning)
54 --version, -v Show version information
55
56Examples:
57 start echo "Hello World"
58 start bun test
59 start --isolated tmux -- bun start
60 start -i screen -d bun start
61 start --isolated docker -- echo 'hi' # uses OS-matched default image
62 start --isolated docker --image oven/bun:latest -- bun install
63 start -i docker -v ~/.config/gh:/root/.config/gh -e TOKEN=abc -- gh repo list
64 start -i docker --image konard/hive-mind-dind:latest --privileged -- solve ...
65 start --isolated ssh --endpoint user@remote.server -- ls -la
66 start --isolated-user -- npm test
67 start -u myuser -- npm start
68 start -i screen --isolated-user -- npm test
69 start --status a1b2c3d4-e5f6-7890-abcd-ef1234567890
70 start --status a1b2c3d4 --output-format json
71 start --list
72 start --list --output-format json
73 start --list --running
74 start --upload-log my-screen-session
75 start --stop my-screen-session
76 start --terminate my-screen-session
77 start --attach my-docker-session
78 start --attach my-docker-session --read-only
79 start --resume my-docker-session
80 start --resume my-docker-session -- bash
81 start --resume-all
82 start -i docker -d --on-kill-resume 3 --recovery-command 'solve --resume' -- solve
83 start --cleanup-dry-run
84 start --cleanup
85
86Features:
87 - Logs all output to temporary directory
88 - Displays timestamps and exit codes
89 - Auto-reports failures for NPM packages (when gh is available)
90 - Natural language command aliases (via substitutions.lino)
91 - Process isolation via screen, tmux, or docker"#
92 );
93}