Skip to main content
Every Egma command prints one fact per line and exits with a numeric code you can branch on. This makes every command safe to call from a CI pipeline, a shell script, or a coding agent — no screen-scraping required. Commands that need a real terminal (the interactive wizard) refuse piped or redirected input and tell you to pass --headless instead.

Global flags

These flags work with every command.

Environment variables

Set these in your shell or CI environment to avoid repeating flags on every command.

Commands

Opens the full interactive wizard. It signs you in, discovers your voice agent using your coding agent, connects the agent to Egma, generates a first test suite, and starts a run — all in one guided flow.The wizard draws on your terminal’s alternate screen. When it closes it leaves a single results URL and a plain summary in your normal terminal buffer, each item on its own line so a triple-click selects it whole.Usage
Key flagsExit codes
The wizard requires a real terminal to display the consent keystroke. Pass --headless to run it in CI or from a script — this treats the coding-agent task as already agreed and produces plain line output.
Signs this machine in to Egma. Opens a browser to a device-approval page pre-filled with a short code. Once you approve it, Egma stores a credential at ~/.egma/credentials (or $EGMA_HOME/credentials), readable only by you.No secret is ever typed into the terminal. If the machine already holds a valid credential, egma login says so and exits without changing anything.Usage
Key flagsExample output
Exit codes
On a machine without a browser (SSH, devbox, container), press [c] during the wait and Egma copies the approval URL to your local clipboard. Approve it in a browser, then paste the full URL, the ?user_code=… portion, or just the code — all three work.
Registers your voice agent with Egma and creates a connection for running simulations. Reads a Retell API key from standard input or from the environment — never as a command-line argument, because arguments appear in process lists and shell history.Running egma connect twice against the same agent is safe. Egma detects the existing registration and reports whether it created, reused, or connection_added on the registration: line.Usage
Key flagsEnvironment variablesExample output
Exit codes
Creates the egma/ folder structure in your repository. Everything init creates is safe to commit — nothing secret ever lands in the folder. Run it again safely at any time; it will not overwrite files that already exist.When you pass --url, init contacts that Egma instance, verifies its identity, and records the result in egma/config.yaml. Every subsequent command run from this repository then finds the instance address automatically, with no --url flag required.Usage
Key flagsExit codes
Writes Egma’s current versions of every test in the egma/ folder into your local files, updating the version: field in each file’s front matter. Use pull to get changes made by teammates in the Egma dashboard before you start editing locally.Usage
Example output
Exit codes
Uploads the tests in your egma/ folder to Egma, creating a new version of each test and writing the new version ID back into the file’s front matter. A successful push never overwrites previous versions — results from last week still reference exactly what they ran.push refuses when Egma holds a version newer than the one your file last synced at. It names every conflicting file on a conflict: line, uploads nothing, and exits 5. Run egma pull first, review what changed, then push again.Usage
Example output (conflict)
Exit codes
Egma will not store a test with no expected behaviors — a test with none can never fail, which makes it meaningless. Fix the file and push again. Egma’s refusal reason is printed verbatim.
Runs every test in your egma/ folder against your connected voice agent. Each test is pinned to its current version before the run starts, so the run record is an exact snapshot of what executed. The command follows the run, printing every change as it arrives.Before starting, egma run checks that your local folder and Egma agree on every test file’s content. Any file Egma has never seen is listed on an unknown: line; any file whose content differs from Egma’s version appears on a not-pushed: line. Either condition refuses the whole run — the fix is egma push.Usage
Key flagsExample output
Exit codes
A skipped result is not a failure. It means the test required something the connection cannot do (e.g. DTMF on a text connection). A failed result means the agent did not meet an expected behavior. Only errored means something went wrong with the simulation infrastructure itself.
Starts a full local Egma instance using Docker Compose: Postgres, ClickHouse, the API, the web UI, the simulator, the grader, and (for phone simulations) a LiveKit server, SIP gateway, and Redis. Run this from your Egma platform checkout, not from your agent repository.After the stack is up, the command prints the address to point your agent repository at, and lists any platform configuration still missing.Usage
Exit codes
Configures a running Egma instance by asking for provider credentials and writing them through the platform API. Run this after egma self-host up and after signing in with egma login --url <address>.The command asks the platform what it is missing, then prompts you for exactly that — in a fixed order: the model provider (for persona reasoning), the speech provider (TTS and STT), and the telephony carrier (for phone simulations). A setting the platform already holds is never asked for again, so a second run only asks about what is still missing, and on a fully configured platform it changes nothing and says so.For the phone setup, Egma asks for a Twilio account, an existing voice number on that account, and the account’s Auth Token. It shows a plan before writing anything to your carrier, and it never buys, ports, or registers a number. The Auth Token is used once and stored nowhere — what runs afterward holds a SIP credential for one trunk.Usage
Exit codes