--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
Egma — interactive wizard
Egma — interactive wizard
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.UsageKey flags
Exit 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.Egma login — sign this machine in
Egma login — sign this machine in
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 Key flagsExit codes
~/.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.UsageExample output
Egma connect — register your voice agent
Egma connect — register your voice agent
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 Key flagsExit codes
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.UsageEnvironment variables
Example output
Egma init — create the egma/ folder
Egma init — create the egma/ folder
Creates the Key flags
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.UsageExit codes
Egma pull — fetch Egma's test versions
Egma pull — fetch Egma's test versions
Writes Egma’s current versions of every test in the Example outputExit codes
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.UsageEgma push — upload your tests
Egma push — upload your tests
Uploads the tests in your Example output (conflict)Exit codes
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.UsageEgma run — run your test suite
Egma run — run your test suite
Runs every test in your Key flagsExit codes
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.UsageExample output
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.Egma self-host up — start a local Egma instance
Egma self-host up — start a local Egma instance
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.UsageExit codes
Egma self-host setup — configure a running instance
Egma self-host setup — configure a running instance
Configures a running Egma instance by asking for provider credentials and writing them through the platform API. Run this after Exit codes
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