orbit is how CI and your terminal talk to Orbit. Artifacts like an .xcresult bundle or an Instruments .trace run to hundreds of megabytes, so they never go through a browser.
Do not confuse it with
parsaa-cli, which is the Parsaa app’s own, unrelated CLI.Install
checksums.txt alongside per-platform archives.
Credentials
ORBIT_TOKEN. It names exactly one project, so no command takes a project argument.
A session from orbit login belongs to you, reaches every project you are a member of, and is the only way the paid MCP tools run from an editor. The two live side by side in ~/.config/orbit/config.json (mode 0600), and neither command disturbs the other’s credential. See MCP and agents.
orbit upload
There is one upload command, not one per kind.--kind is inferred from the path when omitted.
--build-id is linkmap only. --wait blocks up to ten minutes for the server to finish parsing before exiting.
What actually happens
Your bytes never stream through Orbit’s own servers. The CLI hashes and sizes the file locally (zipping a bundle directory deterministically, so an unchanged build produces the same hash and dedups), presigns,PUTs straight to object storage, then confirms. A duplicate hash on the same project skips the transfer entirely.
orbit compliance scan
--upload is passed, and then only the report JSON is sent, never the archive. It reads the app bundle, its frameworks and extensions, their Mach-O binaries and Info.plists, and prints a report scored out of 100: required reason API declarations, third party SDK detection against Apple’s list, entitlements, and a rule-based App Review checklist.
orbit mcp
A stdio bridge to the HTTP MCP server, for editors that speak only stdio.--token or $ORBIT_TOKEN always wins. It renews an expired session before starting, and once on a 401 mid-run, so the editor sees the answer rather than the interruption.
orbit memory
AGENTS.md and CLAUDE.md with the same bytes under a generated header, plus every active memory into .serena/memories/. It sends the ETag of the last pull, so an unchanged bundle costs one 304 and no rewrite. Deletion is bounded by a manifest in .orbit/, so a memory archived in the console leaves the repo and a file the CLI never wrote is never touched. Gitignore .orbit/; commit the generated files.
Push imports the markdown a repo already has. CLAUDE.md and AGENTS.md are split on ## into one instruction memory per section, titled and slugged from the heading, which is what makes a real instruction file import at all (a memory body is capped at 8 KB). Matched by slug, so pushing twice updates instead of duplicating. Imports land as drafts unless --activate is passed, and files carrying the generated header are skipped so a compiled bundle is never re-imported as new memories.
orbit analytics query
--window, --unit, --breakdown and --csv. There is no copy of the metric catalogue in the binary, so a metric added in the console is queryable without a new CLI. A day the rollup has not written is written EMPTY in the CSV, never 0.
Global flags
No flag anywhere in the CLI has a short form.