Skip to main content
OuterLayer measures how people use the dashboard with PostHog, a product analytics service. This page lists every usage event. It also covers the error reports the dashboard sends and what the browser stores. The CLI sends no usage analytics. Each request the CLI sends to OuterLayer names the CLI and its version in the User-Agent header. For the session data that outerlayer sync uploads, see What leaves your machine.

Where events go

Events go to PostHog, a subprocessor: a vendor that processes data for OuterLayer. OuterLayer uses the PostHog project in the United States. The subprocessors page on outerlayer.ai lists it. Events come from two places:
  • The dashboard in your browser. It starts PostHog only after you sign in.
  • OuterLayer servers. OuterLayer sends events when something happens in an organization, such as a build, a stage change or a review.

How PostHog identifies you

PostHog knows a person by user id. It never receives your email or name. PostHog never records dashboard sessions. Session recording is off in code, so a PostHog project setting cannot turn it on. PostHog also groups events by organization. The browser sends the organization id and the organization name. A server event names the organization by its id, and the factory by its id when the event belongs to one.

What PostHog never receives

  • Your email address or name.
  • Session content, such as prompts, transcripts, tool output, code and file paths.
  • API keys and other secrets.
  • Text you type, and the text of anything you copy.
  • Organization or factory names in page views.

Events from the dashboard

The properties have these values:
  • page_path is the path with each dynamic segment replaced by its name, such as /orgs/[orgName]/factories/[appName]/work. The organization and factory names are not sent.
  • tenant_id is the organization id.
  • step is one of app, repo, runner, trace or teammate.
  • done and total are the number of finished steps and the number of steps.
  • surface is setup-panel or banner.
  • provider is github.
  • what is setup, agent-prompt, runner-key or runner-prompt. The copied text is not sent.
PostHog adds its own standard properties to each event, such as the browser, the operating system and the screen size. The dashboard removes every property that holds a page address, a path or a referrer, such as $current_url, $pathname and $referrer. Those values contain organization and factory names. The only page location an event carries is page_path on $pageview. The Privacy Policy lists your IP address, browser and device type among the usage data OuterLayer collects.

Events from OuterLayer servers

Every property is a true or false value, a number, or one value from a fixed list. No property holds free text. For example, role is owner, admin, write, read, disabled or custom, and tracker is github, linear, jira or other. Every server event that names an organization carries tenant_id, the organization id. An event that belongs to a factory also carries app_id, the factory id.

Which person an event names

Most server events name the person who acted, by user id. These cases differ:
  • A build that a runner runs names the member who asked for the build. The runner’s key names no one.
  • user_signed_up names no organization. cli_login_completed names one only when the person belongs to exactly one.
  • An event with no known person names no person. PostHog then makes no person profile for it.

Error reports

OuterLayer collects error reports apart from usage events. They go to an error-reporting service that the subprocessors page lists.
  • What a report holds. The error, your user id and your email. A report from the browser also holds your organization’s id and name.
  • Replay. When a dashboard page hits an error, the report includes a replay of the preceding moments. The replay masks all text and form inputs and blocks images. It shows page layout, not your content.
  • No other recording. A session that hits no error is never recorded.

Browser storage

PostHog keeps its state in memory for the page you are on. It writes no cookie and no local storage, so the dashboard shows no consent banner for analytics. The dashboard stores these items in your browser:
  • Sign-in cookies, which you need to stay signed in.
  • Your color theme and layout choice, in local storage.
  • One local storage key for each factory whose getting-started checklist you dismiss: agentmark:onboarding-checklist-dismissed:<factory id>.
  • Short-lived session storage entries that stop the dashboard from reloading in a loop after a new version ships.
  • The signing secret of a webhook automation you create, in session storage. The dashboard removes it when the page shows it to you, once.

Turn analytics off

The hosted dashboard has no setting that turns analytics off. To ask OuterLayer to stop using your data, or to delete it, email hello@outerlayer.ai. The Privacy Policy describes your rights.

See also