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/