Open Source Developer Tool

    The command line ServiceTitan never built.

    An open-source CLI with named commands for jobs, revenue, technicians, estimates, memberships, and other common ServiceTitan workflows.

    88
    named commands
    212
    tests passing across 34 files
    3
    output formats: table, JSON, CSV
    0
    unsafe TypeScript escapes

    The Challenge

    ServiceTitan power users were stuck in the browser.

    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

    • No ready-made terminal workflow over the official REST API
    • REST API docs are incomplete and some parameters are silently ignored
    • One-off scripts repeated auth, pagination, and output handling
    • Simple lookups still meant browser clicks or custom code

    What We Built

    A terminal-first interface over the parts of ServiceTitan people actually use.

    The CLI was designed for quick answers, automation, and consistent output rather than raw endpoint mirroring.

    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.

    Source-verified revenue reporting

    Revenue commands use ServiceTitan's Reporting API instead of weaker approximations from the standard REST surface.

    Keychain-backed auth with CI fallback

    Credentials are stored in the OS keychain through keytar, with environment variable fallback for automation and CI environments.

    Consistent machine and human output

    Table, JSON, and CSV modes make the CLI useful both for direct terminal use and for piping into scripts and dashboards.

    Global flags that behave the same everywhere

    Every command supports --profile, --output, --compact, and --no-color. List commands add predictable pagination and field-selection flags.

    Easy distribution

    The project ships through npm and Homebrew so users can install it without custom setup or manual binary handling.

    How We Built It

    Live API testing first, then hardening every edge case.

    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

    • oclif v4 with strict TypeScript and zero `as any`
    • keytar OS keychain auth with environment variable fallback
    • Dashboard-matched revenue via Reporting API
    • 212 tests across 34 files
    • Homebrew formula and npm distribution

    The Result

    A real command line for a platform that never shipped one.

    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.

    88
    named commands
    212
    tests passing across 34 files
    3
    output formats: table, JSON, CSV
    0
    unsafe TypeScript escapes

    Next Step

    Start Your Conversation

    If your operators need faster access than the browser can give them, let's build it.