The terminal is the fastest dashboard.
One binary drives every product in your workspace. tilldev talks to the same API as the dashboard at tilldev.dev, so anything you can click you can also script — list issues, upload dSYMs on release, rotate a DSN, or ask your telemetry a question, without leaving your shell.
Install
npm i -g @tillstack/cli # or: pnpm add -g @tillstack/cli
tilldev login # sign in once
tilldev config set org my-team
tilldev config set project prj_1a2b3c # optional defaultThe tillpulse command is installed as an alias of tilldev — same binary, so tillpulse issues and tilldev pulse issues are equivalent.
Account & config
Your token, org, and a default project live at ~/.tilldev/config.json (file mode 0600). Set a default org and project and every command below drops the flags.
| Command | What it does |
|---|---|
tilldev login | Sign in with email + password (prompts for 2FA if enabled); stores a token at ~/.tilldev/config.json (0600). |
tilldev whoami | Show the signed-in user, org, role, and the API URL in use. |
tilldev logout | Forget the stored token — leaves your api-url and org config in place. |
tilldev config get [key] | Show config: api-url · org · project · token (redacted). |
tilldev config set <key> <value> | Set api-url, org, or a default project so later commands need no flags. |
TillPulse — observability
Everything under tilldev pulse …. Set a default project with tilldev config set project <id> to omit --project.
| Command | What it does |
|---|---|
tilldev pulse projects | List projects in the current org. |
tilldev pulse projects create <name> --platform <ios|android|react-native|flutter|web> | Create a project and print its DSN. |
tilldev pulse project <id> | Show a project, including its DSN. |
tilldev pulse issues [--project <id>] [--limit <n>] | List issues, newest first, with level, event count, and last-seen. |
tilldev pulse issue <id> | Show one issue as JSON — stack, breadcrumbs, device, release. |
tilldev pulse metrics [--project <id>] | Fetch the project’s headline metrics (error rate, throughput, health). |
tilldev pulse alerts | List alert rules and their current status. |
tilldev pulse releases create <projectId> <version> [--build <b>] [--env <e>] [--commit <sha>] | Mark a release so crash-free-session and regression tracking have a boundary. |
tilldev pulse sourcemaps upload <projectId> --release <v> --file <path> | Upload a JS/RN source map to de-minify stack traces. |
tilldev pulse proguard upload <projectId> --release <v> --file <path> | Upload an Android ProGuard/R8 mapping file. |
tilldev pulse dsym upload <projectId> --release <v> --file <path> | Upload iOS dSYMs to symbolicate native crashes. |
tilldev pulse dsn rotate <projectId> | Rotate the ingest DSN — old key stops accepting events. |
tilldev pulse ask "<question>" | Ask your telemetry in natural language; streams the answer to your terminal. |
TillAuth — authentication
| Command | What it does |
|---|---|
tilldev auth apps | List your TillAuth apps. |
tilldev auth apps create <name> | Create an auth app; prints its public id and tenant slug. |
tilldev auth app <appId> | Show one auth app as JSON. |
tilldev auth apps update <appRef> [--mfa required|optional] [--name <n>] [--allow-unverified-signin true|false] [--redirect-origins <csv>] [--default-redirect <url>] [--settings-json '<json>'] | Change app settings from a script. Partial — flags you omit keep their value. --settings-json reaches keys without a dedicated flag (allowlist, credentials). The same policy guards as the dashboard apply: a change that would strand existing users is refused with a count. |
Workspace
Team and API keys are org-level — they span every product you’ve enabled.
| Command | What it does |
|---|---|
tilldev team | List members of the current org with their roles. |
tilldev keys | List API keys and when each was last used. |
tilldev keys create <name> [--scopes read,ingest,admin] | Mint an API key (defaults to read). Shown once — copy it immediately. |
Global flags & environment
These work on any command:
| Command | What it does |
|---|---|
--json | Print raw JSON instead of tables — pipe it into jq for scripting. |
--api-url <url> | Override the API base URL. Env: TILLDEV_API_URL. Defaults to https://tilldev.dev. |
--token <token> | Use a token without logging in — ideal for CI. Env: TILLDEV_TOKEN. |
--help, -h · version | Show usage for any command, or print the CLI version. |
In CI
Skip the interactive login: mint a scoped key once with tilldev keys create ci --scopes read,ingest, store it as a secret, and export it. The CLI reads TILLDEV_TOKEN automatically — a common step is uploading source maps right after a build:
export TILLDEV_TOKEN="${{ secrets.TILLDEV_TOKEN }}"
tilldev pulse releases create prj_1a2b3c "$GIT_SHA" --commit "$GIT_SHA"
tilldev pulse sourcemaps upload prj_1a2b3c --release "$GIT_SHA" --file ./dist/main.js.map