systatlas CLI
Search, read maps a level at a time, aggregate, rank, diff, export and upload from a shell.
systatlas is a small command-line client for the REST API: one file, Node 18 or later, no dependencies. It prints compact tables for people and, with --json, exactly what the API returned, for agents. Long reads follow next_cursor on their own (see Working with large data).
Install and sign in
npx systatlas --help
# or
npm install -g systatlas
systatlas login # paste a key from /settings
export SYSTATLAS_API_KEY=sa_… # or use the environmentlogin checks the key against the API and saves it to ~/.config/systatlas/config.json (mode 600). It is only ever printed masked. Public reads work without a key; workspace reads, uploads and contributions need one. --url or SYSTATLAS_URL point it at another server.
Read the registry
systatlas search "payroll" --industry staffing
systatlas org instawork-0a1b2c3d # parts with counts and coverage
systatlas org instawork-0a1b2c3d --node part:money # one part's primitives
systatlas org instawork-0a1b2c3d --node prim:payroll --depth 2 --fields values,sources
systatlas org client --workspace acme-builders # a company of your workspace
systatlas industries # sectors, with organizations under each
systatlas industries --parent construction # one level down
systatlas industry staffing --node part:work # a schema, parts firstIdentifiers, connections and sources
Wherever a ref goes, an identifier from open data works too: wikidata:Q95, lei:…, ror:…, cik:…, ein:…, domain:stripe.com.
systatlas org lei:529900Y25S8NZIYTT924 # find it by its LEI
systatlas lookup lei:529900Y25S8NZIYTT924 wikidata:Q95 domain:stripe.com
systatlas links blackrock-dbd3ed17 # funded by, funds, parents, subsidiaries
systatlas sources instawork-0a1b2c3d # what its facts rest on (needs a key)Ask analytical questions
systatlas aggregate --by region --industry staffing
systatlas aggregate --by primitive --industry staffing --metric entropy
systatlas aggregate --metric revenue # distribution
systatlas top --metric revenue --industry staffing --max 25 # published figures, with year and source
systatlas top --metric employees --strict # reported figures only
systatlas diff instawork-0a1b2c3d gigsmart-4e5f6a7b
systatlas coverage --industry staffing
systatlas coverage --org instawork-0a1b2c3dWith a key
systatlas workspace acme-builders --max 500 # gaps, then the companies, paged
systatlas listings --part software --sort parts # open marketplace listingsExport
export walks every matching organization with keyset cursors and streams one JSON object per line, or CSV with --csv. It never loads the whole result in memory.
systatlas export --industry staffing --csv > staffing.csv
systatlas export --kind nonprofit --max 1000 | jq -r .refUpload and contribute
upload sends components, flows or notes from a JSON array or a CSV file to your workspace, 200 per call. In CSV, columns are item fields; value:<parameter> columns become values and source_url, source_title the source.
# components.csv
# clientId,label,layer,primitive,value:frequency,source_title
# tool/gusto,Payroll in Gusto,software,payroll,Monthly,finance/README.md
systatlas upload acme-builders components.csv
systatlas upload acme-builders flows.json --kind flows
systatlas contribute rival-co-1a2b3c4d findings.jsonFor agents
--jsonprints each API response as one line of JSON (one per page;exportprints one per organization). Each hastokens,hintand, when more is left,next_cursor.- Every list takes the same paging flags:
--limitrows per request,--maxrows in all,--allto follow every cursor,--cursorto continue where a page stopped.--view fullor--view v1pick the response shape. - Errors go to stderr with the API's code and a line on what to do next (log in, narrow the request, check the ref). The exit status is 1 for API and network errors and 2 for a mistyped command or flag.
/api/v1. What a key can see, the rate limit on uploads and the tiers on every value are the API's.