# Terminal commands

Canonical: https://godspeedmissioncontrol.com/guide/terminal-commands

You normally tell Godspeed what to do in a chat ([Things you can say](/guide/things-you-can-say), [Chat commands](/guide/chat-commands)), and your assistant runs these commands for you. Type them yourself to check, repair or script something. Open a terminal: PowerShell on Windows (open the Start menu and type `PowerShell`), Terminal on a Mac, any terminal on Linux. They all start with `mc-`; there is no command named `godspeed`.

## Where the commands are

### Windows

The installer puts the commands in `%USERPROFILE%\.local\bin` and adds that folder to your PATH, the list of folders a terminal looks in. Open a new PowerShell window after installing.

- PowerShell and Command Prompt run `mc-due`, `mc-goals`, `mc-work`, `mc-forecast`, `mc-compile-rules`, `mc-check-keys`, `mc-search`, `mc-prompt-archive`, `mc-prompt-harvest`, `mc-mail`, `mc-observed-state`, `mc-check-built-on`, `mc-research`, `mc-check-brief`, `mc-check-research`, `mc-judge-brief`, `mc-coach-prep` and `mc-notebook-sync`.
- `mc-run`, `mc-decide` and `mc-work-run` can be typed in PowerShell too. They hand themselves over to Git Bash.
- Before 2.0.0-beta.11, `mc-check-built-on` and `mc-research` printed nothing in PowerShell. After an update they print as they do in Git Bash, a terminal that comes with Git, which the installer adds.
- `hermes` is not found in PowerShell. See [hermes](#hermes).

### Mac and Linux

The installer puts the commands and `hermes` in `~/.local/bin`. It adds that folder to your PATH in the settings of bash and zsh, the shell of a Mac's Terminal. Open a new terminal window after installing. A server without Docker, where you ran `install-godspeed.sh`, is the same.

### The one-line server

On a server installed with the one-line command, Godspeed and its commands run inside a Docker container. [Server commands](/guide/server-commands) shows how to run them there.

### Another mission control folder

Inside your mission control folder, a command works on that folder. Anywhere else, it uses the mission control this computer was set up with, except `mc-compile-rules` and `mc-check-built-on`, which need the folder. `--godspeed` names another folder, such as a second mission control installed beside the first:

```bash
mc-due --godspeed "$HOME/godspeed-second"
```

In PowerShell, write the folder as `"$env:USERPROFILE\godspeed-second"`. `mc-goals`, `mc-work` and `mc-forecast` ignore `--godspeed`, so go into the other folder first with `cd`.

## Deadlines and goals

### mc-due

Keeps everything that has a day: a target (the day you would like it done), a deadline (the last day before missing it costs you), or both.

```bash
mc-due
mc-due today
mc-due add <name> --title "..." --target YYYY-MM-DD --done-when "..."
mc-due add <name> --title "..." --to YYYY-MM-DD --done-when "..." --cost "..."
mc-due target <name> YYYY-MM-DD
mc-due target <name> asap
mc-due done <name> [--evidence "..."]
mc-due drop <name> --yes
mc-due check
mc-due state
mc-due --help
```

- `mc-due` alone lists everything, the most pressing first. `today` shows at most three, for today's morning brief.
- `target` gives a new day, or `asap`. `done` closes one, and `drop` calls one off for good.
- `check` closes the ones that can tell by themselves that they are done. `state` shows what is open and what closed the rest.

Options for `add`:

- `--done-when`: what is true once it is finished. Always needed.
- `--target`: the day you would like it done. `--to`: the last day, which needs `--cost`, what it costs you if it slips.
- `--from`: the first day you can start, today if left out.
- `--repeats`: `weekly`, `fortnightly`, `monthly`, `quarterly`, `yearly` or `"every N days"`.
- `--link`: a web address that belongs to it.

Example:

```bash
mc-due add dentist --title "Book the dentist" --target 2026-11-15 --done-when "an appointment is booked"
```

```text
Made dentist. You would like it done by 2026-11-15. Nothing is said about it before that day.
It cannot tell by itself that you did it, so it waits for your word:  mc-due done dentist
```

`mc-due done dentist` writes the day you finished it as a moment on your timeline, under `notebook/Timeline/`, so your lists and reminders see it as done. Without a day, `add` answers "This needs a day". The **Deadline reminders** routine runs `mc-due` every morning at 08:00 ([Get reminded of a deadline](/guide/deadlines)).

### mc-goals

Keeps your goals, one card each in `goals/`. A goal you file stays provisional until you adopt it, and every change keeps its reason. Your first adopted goal starts the routines.

```bash
mc-goals list
mc-goals show <id>
mc-goals tree
mc-goals attention
mc-goals file --kind outcome --title "..." --source "..." [--area health] [--measure "..."]
mc-goals adopt|pause|achieve|retire <id> --why "..."
mc-goals change <id> --set "FIELD=value" --why "..."
mc-goals progress <id> --evidence "..."
mc-goals read <id> <number> --where "..."
mc-goals status [<id>]
mc-goals allow <id> --kind <short-name> --what "..." --per-week <n> --words "..."
mc-goals allow <id> --kind <short-name> --revoke --words "..."
mc-goals may <id>
mc-goals help
```

- `--kind` on `file` is `outcome`, `strategy`, `project` or `commitment`. `--area` is `health`, `money`, `relationships`, `work`, `godspeed` or `other`. `--measure` says how you will know it is reached.
- `attention` shows the goals that get attention today, at most three, each with its reason.
- `read` saves this week's number for a goal's weekly number, and `--where` says where you read it. `status` shows each goal's weekly number, its readings and what came of each step.
- `allow` lets one kind of step go out without asking each time, up to a number per week. It goes only after your morning brief or the daily round's morning message has listed it. `--kind` is a short name you choose, such as `blog-typo-fixes`.
- Money, sign-ups, bookings, cancellations, ads, bulk messages and a first message to someone new always need a fresh yes, and `allow` refuses them.
- `may` shows what a goal may do without asking. `--revoke` takes a permission back ([Approve, stop or allow a step](/guide/steps)).

Example:

```bash
mc-goals file --kind outcome --title "Run a 10 km race" --source "said in chat, 2026-10-17" --area health --measure "a finished 10 km race"
```

```text
run-a-10-km-race: provisional outcome filed
  provisional: never acted on as a goal until adopted; at most one clarifying question in seven days
```

`mc-goals adopt run-a-10-km-race --why "I said yes"` then adopts it. Without `--why` you see "ERROR: --why is required: a goal changes for a reason, and the reason is kept".

### mc-work

Keeps the work your mission control does for your goals. For you: which steps go out, and stopping them.

```bash
mc-work list
mc-work show <id>
mc-work going-out
mc-work went-out
mc-work stop <id> --words "..."
mc-work stop --today --words "..."
mc-work help
```

- `going-out` lists the steps that go out in the next 24 hours unless you stop them. `went-out` lists the ones that went ahead by themselves yesterday.
- `stop` keeps one step back, and `stop --today` every step due within 24 hours. `--words` keeps your reason.
- Times are in UTC, while your routines and your morning brief use your own clock.

Example: `mc-work stop W-20261017-01 --words "not this one"` answers `W-20261017-01: stopped`. With nothing planned, `going-out` answers "nothing goes out in the next 24 hours". A step that is already going out cannot be stopped: ask your assistant to undo it.

### mc-forecast

Keeps your mission control's dated guesses about your goals, which the routines write, and scores them once they are settled.

```bash
mc-forecast list
mc-forecast show <id>
mc-forecast score
mc-forecast help
```

Before any forecast is settled, `score` answers "no resolved binary forecasts yet; the first score exists when the first deadline passes and is resolved with evidence".

## Rules, keys and facts

### mc-compile-rules

Writes the one-line version of each rule in `rules/` into `AGENTS.md`, the instructions your assistant reads first. **Godspeed's brain** in the notebook does this for you, so you need it only after editing a rule file by hand.

```bash
mc-compile-rules
mc-compile-rules --check
mc-compile-rules --godspeed PATH
```

On a new mission control, `--check` answers "AGENTS.md is up to date: 8 rules, 1521 characters." The rules may take at most 4,000 characters. Above that you see "Not written. The block would be" with the size, and your three longest lines.

### mc-check-keys

Checks that this computer can open the keys your folder keeps locked in `secrets/`, such as one added by `mc-mail connect agentmail`, and whether one runs out soon. It never shows a key.

```bash
mc-check-keys [--godspeed PATH]
```

It answers four questions in turn, from "Does your folder carry any keys?" to "Is any of them about to run out?". It ends with "Everything your folder carries is on this computer and working." or the number of lines that need you. A folder without keys, such as a new one, stops after the first question with "Nothing to check."

### mc-check-built-on

When a fact about your life kept in `world/claims/` stops being true, shows which lines in `profile/`, `rules/`, `procedures.md` and `AGENTS.md` still say the old value. It changes nothing.

```bash
mc-check-built-on
mc-check-built-on --claim <subject>/<attribute>
mc-check-built-on --json
```

Example: `mc-check-built-on --claim me/current-city`. Godspeed normally keeps such facts in the notebook, so on most installations it answers "no closed claims yet (0 claims). Nothing can be built on a fact that has not changed." On Windows it runs only in Git Bash.

## Search and the conversation archive

### mc-search

Finds words in the Markdown files of your mission control folder, best matches first.

```bash
mc-search <words...> [--limit N] [--json]
```

Example: `mc-search dentist`. It reads only the files Git keeps in your folder, plus `decisions.md`, and its last line says where it looked. A new installation saves the files it starts with in Git, so those are found from the first day. A file you or your assistant made later is found once it is committed. For your notes, the notebook's search box is quicker.

### mc-prompt-archive

Searches and keeps your conversation archive in `prompts/archive/`: what you typed to AI programs on this computer, and their answers. Keys and email addresses are removed before saving; list names to remove too, one per line, in `~/.godspeed/redact.txt`.

```bash
mc-prompt-archive search <words...> [--limit N]
mc-prompt-archive get <name>
mc-prompt-archive stats
mc-prompt-archive sources
mc-prompt-archive
mc-prompt-archive --dry-run
mc-prompt-archive rescrub
mc-prompt-archive backfill
```

- `search` finds the conversations that contain any of your words, most matches first, 12 unless you set `--limit`. It also lists your saved prompts in `prompts/library/` that contain all of them, and `get` shows one of those in full.
- `stats` counts what is archived, per computer. `sources` lists where on this computer you type to an AI.
- On its own it collects new conversations now. `--dry-run` shows what it would add.
- `rescrub` removes names you added to `redact.txt` later from what is already stored. `backfill` adds the AI's answers to conversations archived without them.

Example: `mc-prompt-archive search invoice reminder`. With no match it says "That is a checked absence, not an error." More on [Find an old conversation](/guide/find-a-conversation).

### mc-prompt-harvest

Adds this computer's new conversations to the archive. The installer schedules it, so run it only to see that it works.

```bash
mc-prompt-harvest --verbose
mc-prompt-harvest --no-push
```

`--verbose` says what it did. Once record sync is connected, it also sends the archive to your private GitHub repository; `--no-push` keeps it on this computer.

## Email

### mc-mail

Connects your Gmail and shows what is connected. Your assistant uses it to search, read and save drafts, and you press Send in Gmail yourself.

```bash
mc-mail status [--check]
mc-mail connect gmail-imap
mc-mail disconnect gmail
mc-mail connect agentmail
mc-mail disconnect agentmail
mc-mail search --gmail <words>
mc-mail read <id> --gmail
mc-mail setup [--check]
```

- `connect gmail-imap` asks for your Gmail address and an app password, 16 letters Google makes for one program on a page the command shows you. App passwords need 2-Step Verification.
- `disconnect gmail` stops at once. Remove the app password at Google as well.
- `connect agentmail` gives your mission control an address of its own at AgentMail, a separate mail service, with an inbox and a read-only key you create there.
- `setup --check` checks that every assistant on this computer knows the mail tool, and `setup` tells them.
- `pair request`, `pair finish <receipt>` and `pair forget` connect a computer over SSH to the Gmail connection of a server without Docker, where `pair approve`, `pair list` and `pair remove` manage them.

With nothing connected, `mc-mail` answers:

```text
gmail: not connected - Optional. When you want it, ask your assistant: Connect Gmail for me. Until then, paste an email or forward it to the mission control's address.
godspeed: not connected - Optional: give the mission control its own address with mc-mail connect agentmail.
```

On the one-line server, `connect gmail-imap` answers with a `docker exec` line to paste into the server's own terminal ([Let it read your Gmail](/guide/email)).

## Routines by hand

Your routines run these commands on their schedule; run them by hand only to test something. Without `--dry-run`, and always with `mc-run`, an AI does the work through your AI account, which costs money with an API key.

### mc-run

Runs one skill (step-by-step instructions in your folder's `skills/`, also called a recipe) with nobody at the keyboard, through Hermes, Claude Code or Codex.

```bash
mc-run --list
mc-run <skill> --prompt "..."
mc-run <skill> --prompt-file FILE --out FILE --timeout SECONDS
```

`--list` shows every skill. `GODSPEED_RUNNER=hermes`, `claude` or `codex` in front of the command picks the program (Mac, Linux or Git Bash). Otherwise it uses a `GODSPEED_RUNNER=` line in `scripts/config/mc-runner.env` or `~/.godspeed/device.env`, or the first of the three it finds.

Example: `mc-run keep-a-note --prompt "Note: dentist on Thursday"`. A wrong name answers "mc-run: there is no recipe called" with the name.

### mc-decide

Makes the day's decision: which work the routine "Daily round: choose today's work" picks for your goals at 05:30.

```bash
mc-decide --dry-run
mc-decide
```

`--dry-run` shows the goals that get attention and the open work, then "Nothing was decided." It still writes its working files into `routines/next-action/`, in a folder named after the day. If a line says a helper is "not on this computer", that helper is missing from this installation and the day was decided without it. A real run ends with `decided` or `NOT decided` and the day.

### mc-work-run

Carries out the day's work items, at most two per run. `--max-items` sets another number. The routine "Daily round: do the work" runs it at 10:00 and 16:00.

```bash
mc-work-run --dry-run
mc-work-run --only <id>
```

`--dry-run` answers "Would run, in this order (at most 2):" with the items, and "Nothing was taken, run or written."

### mc-research

Runs the nightly research for each adopted goal. It reads public web pages for up to two hours, writes research files and contacts nobody. The routine "Nightly goal research" runs it at 00:15.

```bash
mc-research --dry-run
mc-research --only <goal id>
```

`--dry-run` lists what is due tonight, such as `run-a-10-km-race founding never`: the goal's first, fuller research, never run before. On Windows it runs only in Git Bash.

### mc-coach-prep

Prepares each coaching talk of today or tomorrow that is not ready yet, with the `coach-prep` skill. It writes only the talk's preparation and contacts nobody. The routine "Coaching talk preparation" runs it at 03:00.

```bash
mc-coach-prep --dry-run
mc-coach-prep --area weekly-check-in --talk 2026-10-25
```

`--dry-run` lists the talks it would prepare now, or says "Nothing to prepare". `--area` with `--talk` prepares that talk now, also weeks ahead. On Windows it runs only in Git Bash.

### hermes

Hermes is the program that runs your assistant. Its `cron` commands show and control the routines.

```bash
hermes cron list
hermes cron pause <job id>
hermes cron resume <job id>
hermes cron run <job id>
hermes cron runs
hermes cron incidents
hermes cron status
```

- `list` shows every routine with its ID.
- `run` runs one on the scheduler's next tick, which happens only while the notebook program is running.
- `runs` lists recent runs, and `incidents` groups the failures.
- `status` names the scheduler, `godspeed_notebook`, and the active routines. It does not check that the notebook runs.

On Windows, Godspeed keeps its own copy of Hermes, off the PATH. In PowerShell these lines start it, here for `cron list`:

```powershell
$s = "$env:LOCALAPPDATA\Godspeed Mission Control State"; if (-not (Test-Path "$s\installation.json")) { $s = "$env:LOCALAPPDATA\Godspeed Mission Control Full Alpha State" }
$a = Get-Content "$s\assistant.json" -Raw | ConvertFrom-Json
$env:HERMES_HOME = $a.home
& $a.executable cron list
```

The first line picks your state folder. A Windows install made before 2.0.0-beta.11 keeps the older name, which ends in "Full Alpha State", also after updating.

**Settings**, **Routines** in the notebook shows the same routines with **Pause**, **Resume** and **Run due routines** ([Pause, move or run a routine](/guide/routines)). Hermes documents the rest of its [command line](https://hermes-agent.nousresearch.com/docs/reference/cli-commands).

## Optional

### mc-observed-state

Prints one line for a morning brief from the public site Observed State: whether air traffic, the internet or large earthquakes are out of their normal range today. It sends nothing about you.

```bash
mc-observed-state
mc-observed-state --append FILE
```

When its data is missing or old, it says "not available right now".

## Removing it

### mc-uninstall

Removes Godspeed Mission Control's programs from a Mac or Linux computer: the notebook's background service, its scheduled jobs, the programs in `~/.local/bin` and `~/.godspeed`. Your mission control folder stays, with your notebook, photos, files and backups.

```bash
mc-uninstall
mc-uninstall --yes
```

It asks first; `--yes` answers for you. A step that needs `sudo` it could not use is printed at the end, for you to run. [Uninstall](/guide/uninstall) has the rest.

## Commands the assistant and routines use

These are in your assistant's own command folder, and you meet them in logs. The folder is `%LOCALAPPDATA%\Godspeed Mission Control State\hermes-profile\bin` on Windows (`...\Godspeed Mission Control Full Alpha State\...` for an install made before 2.0.0-beta.11), `~/.hermes/bin` on a Mac or Linux, and `/opt/data/full-candidate/hermes/bin` on the one-line server.

- `mc-check-brief`: checks a morning brief before it is sent.
- `mc-judge-brief`: has your assistant judge each line you are handed to post or send.
- `mc-check-written`, `mc-check-moves`, `mc-check-research`: check a work item's file, the day's planned moves and a goal's nightly research.
- `mc-watch`: keeps the topics of your watches.
- `mc-subs`: keeps the register of your AI subscriptions.
- `godspeed-coach`, `godspeed-journal`, `godspeed-headache`: the programs behind habits and talks, the journal and the headache diary.
- `mc-video`: the [video](/guide/video) add-on.
