The growther command
C5 installs one command: growther. This page lists everything it can do.
To see this list in your terminal at any time:
growther helpStart C5 #
Run the command with nothing after it:
growtherThis starts the C5 server and prints the address it is running on — open that address in your browser to use the app. The first time you run it, C5 sets itself up and asks you to activate.
You can also run:
growther startIf C5 is already running, growther start focuses the open app in your browser and exits cleanly. If C5 is registered as a background service, it starts that service.
You can also start C5 directly from links or desktop shortcuts using the growther://start address.
Interactive log filtering #
When started interactively, C5 displays a startup banner and an interactive log filter. All
category logs are off by default to keep output quiet. You can press single hotkey letters
(like v for voice or a for agents) to toggle logs on and off in real time. Your choices
are saved automatically to ~/.growther/config/cli.yaml.
See Log filtering for the full list of hotkeys and configuration options.
All commands #
| Command | What it does |
|---|---|
growther |
Start C5. First run sets itself up. |
growther start |
Start C5 (or focus your browser if already running). |
growther stop |
Stop C5 gently, letting it finish what it is doing. |
growther status |
Say whether C5 is running, and how it is set to start. |
growther service |
Manage starting C5 automatically. See below. |
growther activate |
Pair this computer with your license. |
growther rekey |
Give this computer a new key, keeping the same license. |
growther update |
Get the newest version. |
growther rollback |
Go back to the version you had before. |
growther doctor |
Check your setup and report anything wrong. |
growther home |
Show, check or move where C5 keeps its files. See below. |
growther lock |
Show or clear the single-instance lock. See below. |
growther policy |
Managed configuration for IT: validate, sign, pin. See below. |
growther user |
Create the first administrator on a managed install. |
growther webauthn |
Change the host name passkeys are bound to. See below. |
growther qmd-run |
Run the memory-search engine directly. See below. |
growther verify |
Prove a file really came from us. Works offline. |
growther uninstall |
Remove C5 from your computer. |
growther version |
Print which version you have. |
growther login |
Sign in from the command line, for a machine with no browser. |
growther connect |
Reach a C5 on another machine over your own SSH connection. |
growther remote |
Say whether Remote Control is on, and list the paired devices. |
growther secrets |
Move API keys into a keystore, and check what is stored where. |
growther key |
Escrow, reseal or disable the device key. See below. |
growther restore |
Restore from an encrypted backup. |
growther evidence |
Export audit evidence for an auditor or a legal hold. |
growther cache |
Show the caches, or move them to another disk. See below. |
growther reset-auth |
Clear a user's sign-in credentials so they can enrol again. |
growther voice |
Manage the offline speech model. |
growther qmd-mcp |
Run the memory-search engine as an MCP server. |
growther help |
Show the list of commands. |
Commands in detail #
growther start #
Starts C5, or opens the app in your browser if it is already running.
growther startIf C5 is already running, growther start opens or focuses your browser tab at http://localhost:4299 and exits without creating a second instance. If you have registered C5 as a background service with growther service install, growther start starts that service. Otherwise, it boots C5 directly.
You can also trigger this command from web links and browser buttons using the growther://start protocol link.
growther status #
Tells you whether C5 is running right now, and whether it is set to start on its own when your computer boots.
growther statusgrowther service #
Controls whether C5 starts by itself and stays running.
growther service install # start C5 automatically from now on
growther service status # check whether that is set up
growther service uninstall # stop starting automaticallyUse install if you want C5 always ready. Use uninstall to go back to starting it
by hand.
growther activate #
Pairs your computer with your license. C5 shows you a short code and opens a page where you confirm it. You only do this once per computer.
growther activategrowther rekey #
Gives this computer a new key while keeping the same license and the same history. Your data, settings and anything you have shared stay exactly where they are — only the key changes.
C5 does this on its own every few months, so most people never type it. Reach for it when C5 says the key it has is not the one your license expects:
growther rekeyIf the key on this computer is gone or is no longer the right one — after
restoring from a backup, say, or moving to a new disk — add --recover:
growther rekey --recoverRecovery asks you to confirm in your browser, and it asks you to have signed in within the last 15 minutes. If you get "step-up re-authentication is required", sign out of the license portal, sign back in, and run the command again straight away.
Do not run growther activate to fix a key problem. Activate creates a new
deployment; rekey keeps the one you already have.
growther update #
Gets the newest version. See Updating C5 for the full story.
growther update # update now
growther update --check # only check, do not installC5 restarts itself after an update by default. To stop it doing so — an operator who
manages the restart themselves, or a maintenance window — set GROWTHER_UPDATE_RESTART=0
in the environment C5 runs under. There is no --restart flag.
growther rollback #
Puts back the version you had before an update.
growther rollbackIf you have moved your API keys and licence into the system keystore (see
Secrets and keys), C5 checks before it swaps. An older
version cannot read a keystore reference: it would read the reference itself as your
licence and refuse to start, and every provider key would fail. C5 refuses the roll back
and tells you to run growther secrets revert first. --force proceeds anyway.
growther doctor #
Checks your whole setup and tells you what is wrong in plain words. This is the first thing to run when something is not working.
growther doctorSee Running doctor for what it checks.
growther doctor --json prints one machine-readable report and writes
doctor-status.json into the C5 folder for device-management tools; --strict also fails
on warnings. The report includes where the home was resolved from, the filesystem class
of the data folder, which machine holds the lock, and whether this is a managed install.
growther home #
C5 keeps configuration, databases, keys and caches under one folder. home lets you
see that layout, check a folder before using it, and move to another local disk.
growther home show
growther home probe /Volumes/Work/growther
growther home migrate --to /Volumes/Work/growther
growther home rollback
growther home cancel
growther home prune-retired /Users/you/.growther/data.retired-2026-09-06T10-00-00 --yesmigrate validates the target (a local disk with room to spare), shows what will move,
asks for confirmation, and then stops C5 so the next start performs the move with every
database checked against your key before anything is switched. The old folder is kept
as a retired copy until you prune it. Databases are never placed on a network folder
or a synced folder; see Where your data lives.
A move or a roll back that is interrupted resumes at the next start. cancel abandons
one instead, so a job you no longer want never has to be cleared by hand.
growther lock #
Only one C5 may use a data folder at a time, and the lock records which machine holds it. If a machine was rebuilt and a stale lock remains:
growther lock status
growther lock break --confirmbreak refuses while the holder is alive on this machine.
growther policy #
For IT administrators pushing configuration. See Managed configuration.
growther policy show # what is applied, from where
growther policy validate policy.yaml # one row per key; non-zero if anything is rejected
growther policy keygen --out ./policy-keys # an Ed25519 signing pair
growther policy sign policy.yaml --key ./policy-keys/policy-signing.key
sudo growther policy pin ./policy-keys/policy-signing.pub
growther policy expect # mark this install as managed
growther policy reload # re-read the policy now
growther policy templates --out ./c5-mdm # the ADMX, profile, schema and samplesgrowther user #
On a managed install the anonymous first-user setup is off. Create the first administrator from the device instead:
growther user bootstrap-admin --name "IT Admin"growther webauthn #
For reaching a shared C5 by a corporate host name. A passkey is bound to the name it was created under, so changing that name is an authentication change, not a settings change. See Reaching C5 by a corporate name.
growther webauthn status # what is enrolled, and under which name
growther webauthn migrate-rpid --to c5.contoso.com # bind new passkeys to the new name
growther webauthn migrate-rpid --to contoso.com \
--origins https://c5.contoso.com,https://c5-eu.contoso.com
growther webauthn finish # close the enrolment windowmigrate-rpid opens a dual-name enrolment window: passkeys already enrolled keep working on
the old address while people re-enrol on the new one, at their own pace. finish closes it,
and passkeys still on the old name stop working from that point — run it once
growther webauthn status shows nothing left there.
It refuses while the only administrator credential is a passkey, because changing the name
would then leave nobody able to sign in; enrol a second administrator with a password or PIN,
or set up single sign-on first. It also refuses a name that is not a registrable suffix of the
sign-in origins, since the browser would reject every sign-in afterwards. There is no --force.
Both changing commands ask for confirmation; --yes skips it and --json prints a machine
report. Run them on the machine that hosts C5, as the account that runs C5. The change takes
effect without a restart.
growther qmd-run #
Runs the engine behind memory search directly, for the two things you might want to do by hand.
growther qmd-run pull # fetch the language models it needs (about 2 GB)
growther qmd-run doctor # report on those models and the search indexC5 fetches the models by itself the first time it starts, so most people never need
pull. Reach for it when you want them on your own schedule — before taking a laptop
somewhere without signal, for instance.
growther qmd-run doctor is not the same as growther doctor. The first reports on
memory search; the second checks C5 as a whole.
See Memory search for what these models do and how to install them on a machine with no internet.
growther verify #
Checks that a file really is the one we built, and that nobody has changed it since. Useful if you downloaded C5 somewhere other than our site, or if you simply want to confirm the copy you are running is untouched.
growther verify # check the copy of C5 you are running
growther verify ./growther # check a specific file you downloadedIt works offline. Nothing is sent anywhere and nothing needs downloading: the key used to check the signature is built into C5 itself.
What the answers mean:
| You see | What it means |
|---|---|
| ✓ signature is valid | The record of how this was built really came from us. |
| ✓ contents match | The file has not been changed since we built it. |
| ✗ has been altered | Do not run it. Download it again from growther.ai. |
| ✗ signature is INVALID | Do not run it. Download it again from growther.ai. |
| ? unsigned / no key / no record | Cannot tell either way — see below. |
| ? this is a release archive | Extract it, then verify the program inside. |
A ? is not a pass. It means the check could not be completed — usually because you
are running a development build, because the file has no build record next to it, or
because you pointed it at a downloaded .tar.gz/.zip rather than the program itself.
Treat it as "unknown", not "fine".
Checking a downloaded archive tells you its build record is genuine but says nothing about the bytes inside it, so extract it first and verify the program:
tar -xzf growther-c5-macos-arm64-node24.tar.gz
growther verify ./growther-c5-macos-arm64If you are writing a script, the exit codes are 0 verified, 1 failed or altered, and
2 could not be checked.
See Verifying releases for the whole trust story.
growther key #
The device key that encrypts your databases: where it is kept, and how to make it recoverable. See Secrets and keys.
growther key status # custody mode, fingerprint, escrow state
growther key escrow keygen --out ./kek # run this OFF the C5 machine
growther key escrow enable ./kek/kek.pub # seal the key set, then verify it
growther key escrow rotate ./next-kek.pub # roll to a new key without a flag day
growther key escrow reseal # after a device-key change
growther key wrap # move the key into the OS keystore
growther key unwrap # move it back to a file
growther key recover --escrow key-escrow.blob --private-key ./kek/kek.pemwrap needs a verified escrow and will refuse without one — wrapping makes the OS
keystore a boot dependency, and escrow is the only way back from a destroyed keystore
entry.
growther cache #
The downloaded models and caches, which are usually what filled your disk. Deleting them is safe; C5 fetches them again if it needs them.
growther cache show # where qmd/, speech/, cache/ and lib/ live, and their size
growther cache relocate --to /Volumes/Big/c5 # move all four to another local diskC5 must be stopped to relocate, and the new location is recorded so it survives restarts.
growther secrets and growther restore #
growther secrets status # what is stored where, and what is still in the clear
growther secrets migrate # move API keys out of the config file into a keystore
growther restore --from <backup> # restore from an encrypted backupgrowther evidence #
Export the audit record for an auditor or a legal hold. See Audit trail.
growther login and growther reset-auth #
growther login # sign in from the command line, for a host with no browser
growther reset-auth <user> # clear a user's credentials so they can enrol againreset-auth is the way back in when somebody has lost the device holding their passkey.
growther connect #
Reaches a C5 running on another machine over an SSH connection you already have. It forwards
a local port over SSH and opens C5 in your browser at http://localhost:4399. Nothing is
published, no certificate is involved, and no pairing is needed: you sign in as you would at
that machine, over a channel your SSH already secures.
growther connect user@hostLeave it running; press Ctrl+C to close the forward.
--local-port Npicks another local port.4399is the default on purpose: it is not the port a C5 on this machine serves on, so the forward cannot land on the wrong C5.--remote-port Nif the far C5 is not on4299.
growther connect checks that the two ends really are different machines and refuses if the
forward has looped back to the C5 you started from.
growther remote #
Two read-only commands for a machine with no browser:
growther remote status # whether Remote Control is on, the name it publishes, how many devices are paired
growther remote devices # each paired device: its label, when it was added, when it was last seenNeither can turn Remote Control on or off or revoke a device. Those need the running server to take effect immediately, so they live only in Settings › Remote Control on the machine — see Managing devices.
growther uninstall #
Removes the C5 program, takes it off your PATH, and turns off automatic starting.
growther uninstallYour data is kept. Everything in your data folder stays where it is, so you can reinstall later and pick up where you left off.
Danger To delete your data too, add --purge-data. This erases everything C5 has stored —
your chats, tasks, files, and settings. It cannot be undone.
growther uninstall --purge-data--purge-data removes every folder C5 owns, not only the main one: a data or key folder
you moved to another disk, and the small pointer file that records where the folder is.
It lists each one before removing it. Leaving the pointer behind used to stop the next
fresh install from starting, so a purge is now genuinely complete.
Getting the version #
growther versionUseful when reporting a problem — see Getting help.
Next steps #
- Environment variables — change ports, folders, and channels.
- Running doctor — check your setup.
