@nurix/apollo
v0.6.25
Published
The apollo CLI — bootstrap NuStack services into a repo via the Apollo discovery plane.
Downloads
2,609
Readme
@nurix/apollo — the apollo CLI
The developer's terminal surface for Apollo (apollo.nustack.tech). It signs a machine in once through browser-approved device trust, then works against the same workspaces, Apps, and documents the web studio serves — list and create Apps, read their documents, publish to the marketplace, search the public catalog, and mirror the machine's telemetry state.
Interactive UX is built on @clack/prompts.
Install
Published to npm with public access — no npm account or token required to run it.
npx @nurix/apollo@latest --help # one-shot, no auth
npm install -g @nurix/apollo # or install the `apollo` binary globallyThe tarball ships no secrets. Authentication is the device-trust flow: apollo login registers this machine, you approve its code once in the browser (at /device, behind the studio's Google SSO), and the durable refresh material lands in your OS keychain — never in a file. Every authenticated command then rides a short-lived access token minted from it. Signing in on the CLI signs in the desktop app too: both clients share one keychain item and one ~/.apollo/device_id.
A dead credential is never a dead end: if the server refuses this device's sign-in (revoked, stale), the CLI clears the dead keychain item and drops you straight back into apollo login — you never edit a config file by hand.
Commands
Identity & devices
apollo login [--no-open] # browser-approved device trust; re-login inside the
# 24h window needs no browser
apollo logout # clears the shared keychain item (signs out CLI + desktop)
apollo logout --revoke # server-side self-revoke first, then the local clear
apollo logout --forget-device # also mints a fresh machine identity on next login
apollo device list|status|revoke # this account's devices; revoke kills a machine's accessWorkspaces & Apps
apollo workspace list|create|use # memberships; `use` persists the active Workspace,
# sent as the X-Apollo-Workspace selection header
apollo app list # the active Workspace's Apps
apollo app create [--prompt <text> | --name <name>]
# prompt-first: the first prompt creates the App and
# streams the founding turn (SSE)
apollo app attach [--app <id>] # bind the current folder to an App
apollo app status|open # cloud + local binding view; open in the browser
apollo app publish|unpublish # role-gated marketplace visibilityDocuments
apollo docs list [--app <id>] # the App's documents: slug, type, status, written/empty
apollo docs show <slug-or-id> # the document body inline (bounded)
apollo docs status # per-document workability and row versionsDiscovery & health
apollo list # one line per catalogue service
apollo describe <svc> [--json] # full catalogue entry
apollo search apps|services <q> # public App search / service registry search
apollo graph [--mermaid] # consumes-graph from the catalogue
apollo validate [manifest] # apollo.service.json schema validation
apollo doctor # connectivity + manifest conformance probes
apollo open <svc> # open a service's endpoint or repo
apollo telemetry [status|enable|disable|reinstall]
# per-folder Filebeat telemetry control, mirrored server-side
apollo remote-session capability # the stable remote-execution capability reportapollo app sync … (the document-sync engine) is present but dormant while the GitHub-as-arbiter sync doctrine (AD-002) settles its client surface.
Conventions
--jsoneverywhere — every command emits theapolloJsonVersion: 1machine envelope with--json; errors are typed ({ error: { code, message } }), never a bare HTTP status.- Base URL —
--apollo-urlflag →APOLLO_URLenv → the hosted default (https://apollo.nustack.tech). - Workspace context —
apollo workspace usepersists the selection locally; commands send it as a header the server re-proves against your memberships on every request.
