@erdoai/cli
v0.24.0
Published
Erdo CLI — drive datasets, pages, and evals from the terminal or CI
Downloads
1,281
Maintainers
Readme
@erdoai/cli
Erdo CLI — drive evals (and more) from the terminal or CI, over the same /v1
REST API the MCP tools use.
Install
npm install -g @erdoai/cli # global; then run `erdo`
npx @erdoai/cli --help # or run without installing
erdo update # self-update to the latest published versionRequires Node.js 18+. User-facing install docs: https://docs.erdo.ai/cli
Auth
Multi-account, like gh. Log in with an API key (created in Erdo); it's stored
per account at ~/.config/erdo/config.json and tied to your active org.
erdo login # browser sign-in (mints + stores a token)
erdo login --key erdo_api_... # headless/CI: paste an API key instead
erdo whoami # active account + org
erdo auth status # all accounts (* = active)
erdo auth switch [email] # switch active account (auto-toggles with two)
erdo logout [email]
erdo org list # your orgs (* = active)
erdo org use [id|slug] # set the active org for this account
erdo --org acme eval suites # one-off override for a single commandEnv overrides for CI/scripting: ERDO_API_KEY, ERDO_ORG, ERDO_API_URL,
ERDO_ACCOUNT.
Agents & pages
erdo agent ask "what was revenue last week?" --datasets sales
erdo agent thread --name "landing build" # -> thread id
erdo agent send <thread> "Build a landing page for ACME ..." --agent erdo.artifact-builder
erdo pages deploy --title "ACME" --html @page.html --js @page.js --public
erdo pages list --type html_page
erdo pages get <artifact-id>--html/--js/--css accept @path to read a file. Sending a message to a thread
runs an agent — that's also how the artifact-builder produces a page from a brief.
erdo runs list --agent erdo.artifact-builder --status failed # inspect agent runs
erdo runs get <run-id>Evals
erdo eval suites # list suites (slug, agent, artifact?)
erdo eval suite landing-variations # show a suite + its cases
erdo eval run landing-variations --watch # run it and poll until done
erdo eval results <run-id> # per-case scores + lenses
erdo eval runs --suite landing-variations # recent runs
# maintain the corpus
erdo eval case add landing-variations \
--name "voice-concierge" \
--input "Build a landing page for ACME with a voice concierge (agent id abc123) ..." \
--rubric '[{"criterion":"voice widget loads and is on-brand","weight":2},{"criterion":"hero + form render correctly","weight":1}]'
erdo eval case rm landing-variations voice-concierge--watch exits non-zero if the run doesn't complete cleanly, so it doubles as a
CI gate.
Develop
npm install # or yarn
npm run dev eval suites # run from source (tsx)
npm run build:check # typecheck
npm run build # bundle to dist/ (bin: erdo)Release
Publishing is automated by .github/workflows/publish-cli.yml: pushing a
cli-v* tag builds, typechecks, stamps the version from the tag, and runs
npm publish to the npm registry (auth via the repo's NPM_TOKEN secret).
# bump cli/package.json "version", commit, then tag + push:
git tag cli-v0.4.1
git push origin cli-v0.4.1The tag's version (cli-v0.4.1 → 0.4.1) is the published version; keep
cli/package.json in sync so erdo --version matches locally.
