Skip to main content

EAI CLI

eai is the supported command-line interface for building and operating apps on the EAI platform. It wraps authentication, tenant context, Object Types, ResourceAPI data, document processing, chat workflows, deployment, diagnostics, and gofer asset refresh.

Release Snapshot

FieldValue
Version3.15.7
Released2026-08-20
Last Material ChangeImprove reliable AI workspace launch across current providers
Source Commit8cf062bb0d676af0cabe433d9f884527db23374b

Install

Recommended install:

npm install -g eai-cli

Canonical package install:

npm install -g @enterpriseai/cli

Static registry fallback:

npm install -g @enterpriseai/cli --@enterpriseai:registry=https://eai-support.github.io/eai/registry/

Persistent static fallback setup:

npm config set @enterpriseai:registry https://eai-support.github.io/eai/registry/ --location=user
npm install -g @enterpriseai/cli

Common Workflow

eai login
eai tenant list --format json
eai tenant select <tenant-slug>
eai whoami

eai types validate
eai types seed --tenant-key <tenant-key> --tenant-id <tenant-id> --format json
eai types diff --tenant-key <tenant-key> --tenant-id <tenant-id>
eai resources schema --tenant-id <tenant-id> --format json

eai dev

Object Type Identifiers

Do not move every Object Type field to kebab-case. A definition keeps both a PascalCase source/model name, such as BoardAppUser, and an explicit exact transport/storage slug, such as board-app-user.

Generated and persisted linkTypes[].targetObjectType, runtime target_type, path parameters, and other governed v4 fields contain slugs. The CLI accepts a same-manifest PascalCase relationship target only as authoring shorthand and resolves it through that target's declared slug before diff or seed. An unresolved model name is an error; the CLI does not guess.

For existing Object Types, the exact stored slug is authoritative even when today's derivation from the name would differ. Do not normalize or rename it. App code should use useResources or client.resources so the SDK owns route construction.

Command Groups

CommandPurpose
eai initScaffold an app from the EAI App Template.
eai startDetect or open a supported AI workspace for the current EAI app.
eai login, eai logout, eai whoamiManage local authentication and inspect active context.
eai tenantList, select, create, inspect, and administer tenant context.
eai typesValidate, seed, diff, and pull Object Type definitions.
eai resourcesList, get, create, update, delete, query, aggregate, search, and manage ResourceAPI data.
eai docsUpload, classify, and index documents for platform processing and RAG.
eai chatSend or stream chat requests through configured AI workflows.
eai publicapiCall authorized PublicAPI V4 routes when a named command does not exist yet.
eai runtimeValidate the host-neutral eai.runtime.json app runtime contract.
eai deployTranslate provider env/secrets and black-box doctor deployed EAI app runtimes.
eai goferInstall and refresh repo-local agent workflow assets.
eai templateCheck app-template and UI drift without writing files.
eai updateUpdate the CLI, refresh safe Gofer-managed assets, and report app-template drift.
eai verify, eai doctorRun connectivity, contract, update, and troubleshooting checks.

Output Modes

Use machine-readable output for automation:

eai tenant list --format json
eai resources schema --tenant-id <tenant-id> --format json
eai whoami --simple
eai doctor --no-color

Named Commands Before Raw Routes

Prefer product-shaped commands before eai publicapi:

NeedPreferred CLI
Scaffold appeai init <name> or eai init <name> --current-dir
Start AI workspaceeai start --check, then eai start
Select tenanteai tenant list, eai tenant select <slug>
Publish Object Typeseai types validate, eai types seed, eai types diff
Inspect schemaseai resources schema --tenant-id <tenant-id>
Work with resourceseai resources list/get/create/update/delete/query
Search resourceseai resources search "<query>" --mode hybrid
Work with documentseai docs upload, eai docs classify, eai docs index
Attach resource fileseai resources file upload/get/delete
Use chat workflowseai chat send, eai chat stream
Advanced routeeai publicapi <method> /v4/...