Background
The current CLI (@objectstack/cli) has 16 top-level commands + 8 subcommands, but nearly all are local-only operations (compile, validate, generate, serve, etc.). The platform defines 80+ API endpoints across 13+ domains, yet the CLI only makes 1 remote API call (plugin publish → POST /packages/upload).
This issue tracks adding CLI commands that call the remote Data API and Metadata API, enabling developers to interact with a running ObjectStack server from the terminal.
Current Coverage
| API Domain | Endpoints | CLI Coverage |
|---|
Data CRUD (/data) | 5 | None (only generated SDK) |
Data Batch (/data/:object/batch) | 4 | None |
Data Export (/data/:object/export) | 2 | None |
Metadata CRUD (/meta) | 10 | None |
Metadata Query (/meta/query) | 1 | None |
Metadata Bulk (/meta/bulk) | 2 | None |
Metadata Overlay (/meta/:type/:name/overlay) | 2 | None |
Metadata Import/Export (/meta/export, /meta/import) | 2 | None |
Metadata Validate (/meta/validate) | 1 | Local only (validate command) |
Metadata Dependencies (/meta/:type/:name/dependencies) | 2 | None |
Auth (/auth) | 14 | None |
Permission (/auth/check) | 3 | None |
UI Views (/ui/views) | 5 | None |
Workflow (/workflow) | 5 | None |
Realtime (/realtime) | 6 | None |
Notifications (/notifications) | 7 | None |
AI (/ai) | 3 | None |
i18n (/i18n) | 3 | None |
Analytics (/analytics) | 2 | None |
Automation (/automation) | 9 | None |
Storage (/storage) | 6 | None |
Packages (/packages) | 8 | 1 (plugin publish) |
Feed / Chatter (/data/:obj/:id/feed) | 14 | None |
Discovery (/discovery) | 1 | None |
Proposed Commands (Priority Order)
P0 — Core
P1 — Deployment & Metadata Lifecycle
P2 — Extended Operations
P3 — Nice to Have
Common Infrastructure Needed
All remote commands will need:
- Server URL resolution —
--url flag or OBJECTSTACK_URL env var (default: http://localhost:3000) - Authentication — Bearer token from
os auth login, stored in ~/.objectstack/credentials.json or OS keychain - Output formatting —
--format json|table|yaml flag for all data commands - Error handling — Consistent HTTP error → CLI error mapping
Reference
- API spec definitions:
packages/spec/src/api/plugin-rest-api.zod.ts - Metadata API schemas:
packages/spec/src/api/metadata.zod.ts - OpenAPI spec:
packages/spec/json-schema/openapi.json - Current CLI commands:
packages/cli/src/commands/
Background
The current CLI (
@objectstack/cli) has 16 top-level commands + 8 subcommands, but nearly all are local-only operations (compile, validate, generate, serve, etc.). The platform defines 80+ API endpoints across 13+ domains, yet the CLI only makes 1 remote API call (plugin publish→POST /packages/upload).This issue tracks adding CLI commands that call the remote Data API and Metadata API, enabling developers to interact with a running ObjectStack server from the terminal.
Current Coverage
/data)/data/:object/batch)/data/:object/export)/meta)/meta/query)/meta/bulk)/meta/:type/:name/overlay)/meta/export,/meta/import)/meta/validate)validatecommand)/meta/:type/:name/dependencies)/auth)/auth/check)/ui/views)/workflow)/realtime)/notifications)/ai)/i18n)/analytics)/automation)/storage)/packages)plugin publish)/data/:obj/:id/feed)/discovery)Proposed Commands (Priority Order)
P0 — Core
os data query <object>— Query records (GET /api/v1/data/:object)os data get <object> <id>— Get single record (GET /api/v1/data/:object/:id)os data create <object>— Create record (POST /api/v1/data/:object)os data update <object> <id>— Update record (PATCH /api/v1/data/:object/:id)os data delete <object> <id>— Delete record (DELETE /api/v1/data/:object/:id)os meta list [type]— List metadata types or items (GET /api/v1/meta,GET /api/v1/meta/:type)os meta get <type> <name>— Get metadata item (GET /api/v1/meta/:type/:name)os meta register <type>— Register metadata (POST /api/v1/meta/:type)os meta delete <type> <name>— Delete metadata (DELETE /api/v1/meta/:type/:name)os auth login— Authenticate and store session/tokenos auth logout— Clear stored credentialsos auth whoami— Show current session info (GET /auth/get-session)P1 — Deployment & Metadata Lifecycle
os meta export— Export metadata bundle (POST /api/v1/meta/export)os meta import— Import metadata bundle (POST /api/v1/meta/import)os meta validate— Remote validation (POST /api/v1/meta/validate)os meta deps <type> <name>— Show dependencies (GET /api/v1/meta/:type/:name/dependencies)os deploy— Deploy metadata to target environment (combine export + import)os package install— Install package (POST /api/v1/packages/install)os package upgrade— Upgrade package (POST /api/v1/packages/upgrade)os package list— List installed packages (GET /api/v1/packages)os package rollback— Rollback package (POST /api/v1/packages/:id/rollback)P2 — Extended Operations
os data export <object>— Export data (POST /api/v1/data/:object/export)os data import <object>— Bulk create from file (POST /api/v1/data/:object/createMany)os automation list— List automation flows (GET /api/automation)os automation trigger <name>— Trigger a flow (POST /api/automation/:name/trigger)os automation toggle <name>— Enable/disable flow (POST /api/automation/:name/toggle)os discover— Service discovery & health check (GET /api/v1/discovery)P3 — Nice to Have
os ai query— Natural language query (POST /api/v1/ai/nlq)os storage upload— Upload file (POST /api/v1/storage/upload)os analytics query— Run analytics query (POST /api/v1/analytics/query)os i18n— Get translations (GET /api/v1/i18n/translations/:locale)Common Infrastructure Needed
All remote commands will need:
--urlflag orOBJECTSTACK_URLenv var (default:http://localhost:3000)os auth login, stored in~/.objectstack/credentials.jsonor OS keychain--format json|table|yamlflag for all data commandsReference
packages/spec/src/api/plugin-rest-api.zod.tspackages/spec/src/api/metadata.zod.tspackages/spec/json-schema/openapi.jsonpackages/cli/src/commands/