Skip to content
Scalpels home

Scalpels is officially launching on October 31, 2026. Special early adopter pricing is available now.

Telltale

Laravel MIT licensed Experimental

Know which screens your desktop and mobile users actually reach, how long their sessions run, which release they are on and which PHP errors they hit. The server runs on hardware you already pay for, the device data lands in your own database, and your agents ask it questions over MCP.

Work in progress. Available to supporters.

Replaces
Hosted mobile product analytics
Runs on
Your Laravel Cloud account
Needs
Compute · Database · Queue · Scheduler

What it captures

Everything below comes from NativePHP's own signals and Laravel's exception handler. Telltale adds no native crash hooks and no new lifecycle events.

  • Screen views, both platforms

    NativePHP Mobile screen-mounted, resumed and unmounted signals, and window focus and route changes on desktop.

  • Estimated sessions

    A first event opens a session and thirty minutes of inactivity opens the next, with context captured once per session rather than per event.

  • Release adoption

    App and client versions, version codes and the existing update-installed and auto-updater events, grouped by release.

  • PHP error paths

    Exception class, a scrubbed and capped message, normalised file and line, a capped trace and a grouping fingerprint.

  • Your own events

    Telltale::event() with bounded properties, an optional opaque identity, and a beforeSend callback that can scrub or drop anything.

  • Analysis over MCP

    Fifteen tools for active users, sessions, screen flow, funnels, retention, release adoption, error groups and ingest health.

  • No hardware identifier, by construction

    An install is a random UUID generated on the device that resets on reinstall — never IDFV, never Android ID, never anything the platform assigns. The server uses the request IP to rate-limit and does not store it as analytics data, obvious email and phone patterns are scrubbed out of automatically captured strings, and optOut() stops capture and clears the outbox.

  • One header lines the device up with your backend

    An opt-out middleware stamps X-Telltale-Session on the NativePHP app's own outbound Laravel requests, carrying the session UUID and a hashed install id — never the raw install id, the ingest value or the bearer token. So a slow screen on a device and the API call behind it are the same story, and requests to Telltale's own endpoints never carry it.

Telltale vs hosted app analytics

A narrow NativePHP instrument, not a growth platform

PostHog, Sentry and Firebase each cover far more than this, on more platforms, and two of them do the thing Telltale explicitly does not: native crash reporting. Telltale is for a team shipping a NativePHP app that wants the product-analytics and PHP-error slice on infrastructure it already operates.

Telltale feature comparison
Feature Telltale Telltale is MIT licensed and Experimental. v1.0.0 is tagged and the client installs from Packagist; native crash reporting is out of scope for v1. PostHog Hosted product analytics, replay and flags, with a self-host option. Sentry Hosted error and performance monitoring, with an official self-hosted distribution. Firebase Google's mobile analytics and Crashlytics crash reporting.
NativePHP screens and sessions the row we rebuilt Does this well:Purpose built Partly, or with a caveat:Generic SDKs Not built:Not its job Partly, or with a caveat:Native SDKs only
PHP errors from the device the row we rebuilt Does this well:Captured and grouped Partly, or with a caveat:Server-side SDK Does this well:Built in Not built:Native only
Release adoption and retention the row we rebuilt Does this well:Built in Does this well:Built in Partly, or with a caveat:Releases, not retention Does this well:Built in
Native crashes, OOM and ANRs we did not build this Not built:Out of scope Partly, or with a caveat:Via error tracking Does this well:Built in Does this well:Built in
Session replay we did not build this Not built:Not built Does this well:Built in Does this well:Built in Not built:Not offered
Feature flags and experiments we did not build this Not built:Not built Does this well:Built in Partly, or with a caveat:Tracks other providers Does this well:Remote Config
A chart dashboard we did not build this Not built:MCP, not charts Does this well:Built in Does this well:Built in Does this well:Built in
Where the device data lives Does this well:Your Cloud account Partly, or with a caveat:Cloud or self-host Partly, or with a caveat:Cloud or self-host Works, but on their terms:Google's cloud
Cost of the next event Does this well:Your infrastructure Works, but on their terms:Per event, by tier Works, but on their terms:Reserved or overage Works, but on their terms:Plan and usage
Who is on call for the tool itself Partly, or with a caveat:You are Does this well:They are Does this well:They are Does this well:They are
  • Does this well
  • Partly, or with a caveat
  • Not built
  • Works, but on their terms

The honest test

Ask what you actually open the analytics tab to find out. Moving loses little when all three of these are true.

  • The app you are measuring is a NativePHP desktop or mobile app.
  • The questions are which screens, which sessions, which release and which error — not an experiment platform.
  • You would rather your users' device data sat in your own database than in a vendor account.

Then Telltale keeps that slice next to the application it describes, and your agents can query it directly. Telltale is Experimental today, so start with one app and one release.

Keep paying them if

These are the parts we chose not to build, and we are not going to pretend otherwise.

  • You need native crash, OOM or ANR reporting — that is explicitly out of scope for v1.
  • You want session replay, heatmaps or an experiment and feature-flag platform.
  • Your team wants a chart dashboard to click through rather than an MCP server to ask.
  • You need vendor support, an SLA, or somebody else on call for the ingest endpoint.

Small, sharp tools are a deliberate scope, not an unfinished roadmap. Telltale will not grow into a growth platform.

Be honest about it

You don't need us to run Telltale

The repository is public and MIT licensed. These are the steps, and you are welcome to spend the afternoon doing them by hand.

  1. 1

    Fork the Telltale repository into your own GitHub organisation.

  2. 2

    Deploy the fork to Laravel Cloud with Postgres, a managed queue and the scheduler enabled, then set a permanent custom domain before you build the app — a URL shipped inside a build cannot be changed for that build.

  3. 3

    Run composer require artisan-build/telltale-client in your NativePHP app, create an app in the Telltale UI, and set TELLTALE_URL and TELLTALE_INGEST in every mobile and desktop build environment.

Or become a supporter, and Scalpels deploys it for you. It forks it, provisions exactly what it needs on your Laravel Cloud account, and deploys it. The app and the infrastructure are yours either way — the only question is who spends the afternoon.

Deploy Telltale as a supporter

Want some help?

After you buy, we will pay for an hour with one of these experts to help you get everything up and running.

  • Artisan Build

    USA

    We run Scalpels, as well as a suite of other tools for developers and development teams.

    Agency Ask for help
    Ask Artisan Build for help

Telltale pairs with the rest of the suite

Hone covers the Laravel backend the app calls — and Telltale's session header lands in those requests, so a slow screen and the API call behind it are one story. Reel does the same job for the web side of the same product, and Assay covers the AI runs inside it.