88 commands across 28 top-level groups
Jobs, customers, invoices, estimates, memberships, technicians, dispatch, payroll, inventory, reporting, and more are available from a single install.
Open Source Developer Tool
An open-source CLI with named commands for jobs, revenue, technicians, estimates, memberships, and other common ServiceTitan workflows.
The Challenge
ServiceTitan exposed a REST API, but common terminal tasks still required custom code. Power users and data teams had no ready-made CLI for quick lookups, repeatable reports, or shell automation.
No official CLI existed, and the REST API documentation was incomplete. Some endpoints silently ignored parameters, which meant even experienced developers could think a request worked when it had actually returned the wrong slice of data.
The result was a platform with valuable business data but no serious terminal workflow for operators who needed fast lookups, automation, or integration into broader reporting systems.
What the operation was fighting
What We Built
The CLI was designed for quick answers, automation, and consistent output rather than raw endpoint mirroring.
Jobs, customers, invoices, estimates, memberships, technicians, dispatch, payroll, inventory, reporting, and more are available from a single install.
Revenue commands use ServiceTitan's Reporting API instead of weaker approximations from the standard REST surface.
Credentials are stored in the OS keychain through keytar, with environment variable fallback for automation and CI environments.
Table, JSON, and CSV modes make the CLI useful both for direct terminal use and for piping into scripts and dashboards.
Every command supports --profile, --output, --compact, and --no-color. List commands add predictable pagination and field-selection flags.
The project ships through npm and Homebrew so users can install it without custom setup or manual binary handling.
How We Built It
The CLI was built against the real ServiceTitan API, not the happy path implied by the docs.
The project uses oclif v4 with strict TypeScript and zero `as any`. Critical workflows were tested against live ServiceTitan behavior and cross-verified against BigQuery and Metabase ground truth. That work exposed real bugs in filters, record caps, and report routing.
The hardest part was learning the API's undocumented behavior: jobs use `jobStatus` rather than `status`, memberships `active: true` is a billing flag rather than an active-status filter, and the Reporting API requires POST instead of GET. Each issue was discovered through live testing and then locked down with regression coverage.
By the end, auth errors, network failures, rate limiting, and command edge cases were covered across 212 tests in 34 files, making the CLI reliable enough for real operators and repeatable automation.
Implementation notes
The Result
The CLI gives ServiceTitan users fast terminal access to business data and automation hooks that the product itself never provided.
The CLI gives ServiceTitan power users fast terminal access to common business data. Revenue reports, job lookups, technician stats, and estimate counts are available without rebuilding auth and pagination for every script.
It was published on npm as @rowvyn/servicetitan-cli, packaged for Homebrew, and open-sourced on GitHub.
Next Step
If your operators need faster access than the browser can give them, let's build it.
hello@rowvyn.com