Skip to the four calls
MAESTRO

The Ledger

What leaves your machine

Privacy

Maestro runs on your machine. Your code, your prompts, and your AI conversations never reach our servers. This page lists every byte that does, what turns it off, and where to read the code that sends it.

Last reviewed , against Maestro 0.18.

The short answer

  1. Your code never leaves your machine because of Maestro.

    Maestro is a desktop app. It starts the AI coding tools you already installed, as child processes, on your computer. Those tools talk to their own vendors with your own credentials, under their own terms. Maestro is not in that connection and cannot read it.

  2. Your prompts and AI conversations are never sent to us.

    They are written to files on your disk and stay there. We have no server that receives them and no code that would send them.

  3. Maestro itself makes four network calls, all small, all optional.

    An install count, Cue automation counters, the leaderboard if you join it, and crash reports. Full detail below, with payloads.

  4. You can turn all of it off in Settings, and the app keeps working.

    No account is required to use Maestro. There is no login.

Below this line: the receipts. Four calls, in full, so you can check the four statements above.

  1. 1Install check-inOne install counter
  2. 2Cue countersAutomation event totals
  3. 3LeaderboardOnly if registered
  4. 4Crash reportsStack traces only

The four calls

Call 1 of 4

Install check-in

POST https://runmaestro.ai/api/telemetry/checkin

When
Once at launch, then once a day while the app runs.
Why
To count how many installs are active, and which platforms and themes to prioritize.
Source
src/main/checkin.ts
Payload, in full
{
  "guid": "3f2a91c4-...",
  "version": "0.18.6",
  "platform": "darwin",
  "arch": "arm64",
  "theme": "dracula"
}

guid is a random UUID that Maestro generates once and stores in checkin-id.json in your data folder. It is not derived from your hardware, your account, your network, or anything else about you. Delete the file and you become a new, unrelated install. platform and arch are build-target buckets, the same two values that appear in every download filename.

Off switch

Settings > General > Updates > Check for updates automatically.

That one toggle governs both the update check and this ping. With it off, nothing is sent, ever. There is no second call site.

Unpackaged builds, which means anything you build from source or run in development, never send this at all.

Call 2 of 4

Cue automation counters

POST https://runmaestro.ai/api/v1/cue/stats

When
In batches, after an Auto Run finishes, when the app goes quiet, or when 200 events have queued. Never on every trigger.
Why
To know how much automated work Cue is actually doing across the install base, and which trigger types matter.
Source
src/main/cue/cue-telemetry.ts
Payload, in full
{
  "schema_version": 1,
  "client_id": "8c1d0e77-...",
  "app_version": "0.18.6",
  "platform": "darwin",
  "window_start": "2026-09-22T14:02:11.000Z",
  "window_end": "2026-09-22T14:48:03.000Z",
  "events": [
    { "type": "trigger_fired", "subscription_id_hash": "a91f4c7b20e83d15", "trigger_id_hash": "5c0b...", "event_type": "file_changed" },
    { "type": "run_completed", "pipeline_id_hash": "7d2e...", "chain_root_id": "b4e1...", "duration_ms": 184320, "status": "success", "task_kind": "agent_handoff" }
  ],
  "totals": { "trigger_fired": 12, "run_completed": 4, "execution_time_ms": 733104 }
}

The names you gave your pipelines, subscriptions, and triggers are not in there. Each one is replaced by sha256(installationId + ":" + name), truncated to 16 hex characters, before the event is written. Your install id is the salt, so the same pipeline name on two different machines produces two different hashes and cannot be correlated. The hashing happens before the event reaches the local outbox, so the plaintext name is never even written to the telemetry table on your own disk.

No prompt, no file path, no repository name, no agent name, and no command text is in this payload. The payload is capped at 256 KB; an oversized batch is dropped rather than sent.

Off switch

Settings > Encore Features > turn off Usage Stats (or Maestro Cue). Either one stops both collection and submission.

Setting the environment variable MAESTRO_DISABLE_CUE_TELEMETRY=1 disables it unconditionally.

Both of those Encore Features ship on. If you want them off, turn them off; they are in Settings on first launch, not buried.

Call 3 of 4

Leaderboard

POST https://runmaestro.ai/api/m4estr0/...

When
Only after you register, by typing an email into the leaderboard sign-up and confirming it.
Why
It is a public scoreboard of long autonomous runs. It exists to be public.
Source
src/main/ipc/handlers/leaderboard.ts
Registration payload, in full
{
  "email": "[email protected]",
  "displayName": "Your Name",
  "githubUsername": "optional",
  "twitterHandle": "optional",
  "linkedinHandle": "optional",
  "discordUsername": "optional",
  "blueskyHandle": "optional",
  "badgeLevel": 4,
  "badgeName": "...",
  "cumulativeTimeMs": 421900000,
  "totalRuns": 87,
  "longestRunMs": 33140000,
  "longestRunDate": "2026-09-14",
  "installationId": "8c1d0e77-...",
  "source": "auto-run"
}

This is the only call on this page that carries anything identifying, and it carries it because you asked to appear on a public list.

Run durations and counts. No prompts, no repository names, no code, no file paths. Your email is used to confirm the registration and to let you claim the same entry from a second machine. It is not shown on the leaderboard and is not sold, shared, or mailed to for anything else.

Off switch

Do not register. Nothing is submitted before you do.

To be removed after the fact, ask in Discord or open an issue on GitHub, and the row is deleted.

Call 4 of 4

Crash reports

POST to Sentry, not to us

When
When Maestro crashes or throws an unhandled error.
Why
To find and fix the crash.
Source
src/main/index.ts, src/shared/sentryFilters.ts

A crash report carries a stack trace, the app version, the operating system, and a short trail of recent in-app actions such as "opened settings" or "started agent". Performance tracing is off (tracesSampleRate: 0), so no browsing or timing data is collected.

Stack traces can contain file paths, because that is what a stack trace is. They do not contain file contents, prompts, conversations, or credentials.

Off switch

Settings > General > Send anonymous crash reports.

There is a second gate you get for free. The Sentry key is not in the source code. It is injected at packaging time from a private secret. A Maestro you build yourself, or any fork, carries no key and therefore reports nowhere, to us or to anyone.

What is never sent

  • File contents, of any file, ever.
  • Your prompts, and the AI’s replies.
  • API keys, tokens, passwords, or any credential.
  • Repository names, git remotes, branch names, commit messages.
  • Agent names, tab names, group names.
  • Directory names or project paths, outside of a crash stack trace.
  • Keystrokes, screen contents, clipboard.

Your IP address appears in none of our stored records. Cloudflare terminates the connection and sees it in transit, as every web server does; we do not log it against your install id.

Where your data lives

All of it is on your disk, in one folder.

  • macOS~/Library/Application Support/maestro/
  • Windows%APPDATA%\maestro\
  • Linux~/.config/maestro/

That folder holds your agents, tab transcripts, conversation history, usage statistics (stats.db), Cue automation events (cue.db), pasted images, and settings. Nothing in it is synchronized anywhere. Delete the folder and the data is gone.

Maestro is AGPL-3.0 open source. Every claim on this page is checkable at github.com/RunMaestro/Maestro.

Things that look like telemetry and are not

Several Maestro features have the word "stats" or "share" near them and send nothing.

Usage Dashboard, Tokens tab, Director's Notes, Document Graph

All read local SQLite and local transcripts. All computed on your machine. Nothing is uploaded. These are private analytics for you, about you.

Performance profiling

Settings can capture a Chromium performance trace. The trace is written to a file on your disk and stops there. Nothing uploads it. If you want us to see it, you attach it to an issue yourself.

In-app feedback

Feedback files a GitHub issue through the gh CLI under your own GitHub account, on the public Maestro repository. You see what it will say before it is filed. Two things to know: the issue is public, and any screenshots you attach are uploaded to a public repository named maestro-feedback-attachments under your account. The optional debug package is sanitized first: no keys or tokens, no conversation content, no file contents, and your username is replaced with ~ in every path.

Update checking

The update check asks api.github.com which releases exist. GitHub sees the request as it would see any visit to a web page.

WakaTime

Off by default. If you switch it on, coding-time heartbeats go to WakaTime under your own API key and their privacy terms, not ours.

The web and mobile interface

It is a server on your own machine. If you expose it with a tunnel such as Cloudflare Tunnel, that provider is in the path between your phone and your computer, and anyone with the link can reach it. Turn on the access token in Settings > Web Interface before you share a link. It is off by default.

AI provider CLIs

Claude Code, Codex, OpenCode, Factory Droid, and Copilot CLI each send your prompts and code to their own vendor, under the account you signed in with. That is the point of them. Their terms govern that traffic. Maestro does not add to it, intercept it, or copy it.

Turn it all off

Setting all of these leaves Maestro making zero network calls of its own.

SettingWhereDefaultStops
Check for updates automaticallySettings > General > UpdatesOnUpdate check and install check-in
Send anonymous crash reportsSettings > General > UpdatesOnAll crash reporting
Usage Stats (Encore Feature)Settings > Encore FeaturesOnCue counters, collection and submission
Leaderboard registrationNever registered by defaultOffEverything leaderboard
Web interfaceSettings > Web InterfaceOffThe local server
WakaTimeSettings > IntegrationsOffCoding-time heartbeats

Maestro needs no account and no license check. With the rows above set, it runs fully offline apart from whichever AI provider you have chosen to use.

Who else is involved

Cloudflare
Hosts runmaestro.ai and the endpoints above.
Sentry
Receives crash reports, if you leave them on.
Resend
Sends the one confirmation email when you join the leaderboard.
GitHub
Hosts the releases you download and the issues you file.

We do not use advertising trackers, and we do not sell or share any of this.

Questions and corrections

If something here does not match what the code does, that is a bug and we want to know. Open an issue, or say so in Discord, and this page gets corrected.