openmerit 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +20 -53
- package/dist/pi/scout-extension.mjs +177 -0
- package/dist/pi/src/index.d.ts +6 -32
- package/dist/pi/src/index.js +49 -787
- package/dist/terminal/scout-update.json +1 -1
- package/dist/terminal/src/install.mjs +102 -166
- package/dist/terminal/src/scout-credentials.d.ts +12 -0
- package/dist/terminal/src/scout-credentials.js +41 -0
- package/dist/terminal/src/scout-credentials.ts +44 -0
- package/dist/terminal/src/scout-instructions.d.ts +5 -0
- package/dist/terminal/src/scout-instructions.js +103 -0
- package/dist/terminal/src/scout-instructions.ts +106 -0
- package/dist/terminal/src/scout-pi.d.ts +44 -0
- package/dist/terminal/src/scout-pi.js +84 -0
- package/dist/terminal/src/scout-pi.ts +76 -0
- package/dist/terminal/src/telemetry.mjs +2 -2
- package/dist/terminal/src/updates.js +2 -1
- package/dist/terminal/src/updates.ts +2 -1
- package/docs/adapter-guide.md +2 -0
- package/docs/architecture.md +7 -5
- package/docs/automation.md +2 -0
- package/docs/budgets.md +2 -0
- package/docs/commands.md +3 -1
- package/docs/demo.md +1 -1
- package/docs/first-trial.md +2 -0
- package/docs/getting-started.md +19 -44
- package/docs/index.md +10 -6
- package/docs/inference-terminal.md +1 -1
- package/docs/lifecycle.md +2 -0
- package/docs/operations.md +2 -0
- package/docs/pi-extension.md +32 -28
- package/docs/roadmap.md +6 -5
- package/docs/scout-data-policy.md +22 -64
- package/docs/scout.md +137 -19
- package/docs/security.md +8 -2
- package/docs/testing.md +2 -0
- package/docs/troubleshooting.md +23 -28
- package/docs/ux-reference.md +1 -1
- package/package.json +11 -7
- package/dist/pi/src/scheduler.d.ts +0 -11
- package/dist/pi/src/scheduler.js +0 -137
- package/dist/pi/src/wakeup.d.ts +0 -2
- package/dist/pi/src/wakeup.js +0 -108
- package/docs/memo.md +0 -126
package/docs/getting-started.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Getting started
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
OpenMerit provides a passive Inference Terminal, Scout model-selection guidance, and a separate [agent-evaluation CLI](agent-evaluations.md). Pi Scout setup requires OpenMerit **0.1.12** or newer and Pi **1.5.0**. Package publication and website deployment are independent releases.
|
|
4
4
|
|
|
5
5
|
## Open your inference environment
|
|
6
6
|
|
|
@@ -12,65 +12,40 @@ cd /path/to/your/application
|
|
|
12
12
|
openmerit dash
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
The Inference Terminal
|
|
15
|
+
The Inference Terminal opens a local, read-only view of the selected application's services, models, recorded requests, and linked compute. It does not require Pi or a provider API key, make inference calls, or change model assignments. Supported code/configuration declarations identify inventory; request history requires existing supported logs or exports. See [the terminal guide](inference-terminal.md) for collection, privacy, configuration, and diagnostics.
|
|
16
16
|
|
|
17
17
|
To inspect fictional data without installation, open the [hosted dashboard](https://dash.openmerit.ai/) or its [before/after comparison](https://dash.openmerit.ai/demo). Neither connects to your machine.
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Connect Scout to a coding agent
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Install the extension in Pi:
|
|
24
|
-
|
|
25
|
-
```sh
|
|
26
|
-
pi install npm:openmerit
|
|
27
|
-
pi list
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Run `/openmerit doctor` inside Pi to confirm that the extension is available.
|
|
31
|
-
|
|
32
|
-
## Install from source
|
|
21
|
+
Claude Code setup is described in [the Scout guide](scout.md#connect-a-coding-agent). For the new Pi integration, use Pi **1.5.0**, Node.js 22.19 or newer, and npm. Run the intended command in your shell:
|
|
33
22
|
|
|
34
23
|
```sh
|
|
35
|
-
|
|
36
|
-
cd openmerit
|
|
37
|
-
npm ci
|
|
24
|
+
npx -y openmerit@latest install --client pi --scope user
|
|
38
25
|
```
|
|
39
26
|
|
|
40
|
-
|
|
27
|
+
Approve the matching device code in the browser, then start a **new Pi session**. Only approve a request you initiated. User scope is the default and applies across projects. For one project, run this from that project's root instead:
|
|
41
28
|
|
|
42
29
|
```sh
|
|
43
|
-
|
|
30
|
+
npx -y openmerit@latest install --client pi --scope project
|
|
44
31
|
```
|
|
45
32
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
## Establish a product profile
|
|
49
|
-
|
|
50
|
-
Open the product repository in interactive Pi with the extension loaded. If the project has no OpenMerit state, the Pi adapter performs a bounded source preflight. It also scans after a settled Pi build turn, so an application created from an initially empty directory can enter setup without a slash command. A repository without such a target remains idle; use `/openmerit setup` only to recover or configure a custom integration explicitly.
|
|
33
|
+
Each client/scope installation has its own private Scout key; project keys are stored outside the repository. Do not install overlapping Pi user/project adapters or a duplicate `openmerit` MCP entry. The installer reports conflicts rather than overwriting edited or unowned files.
|
|
51
34
|
|
|
52
|
-
|
|
35
|
+
The adapter connects Scout through Pi's native MCP and supplies the shared Scout rule and skill. Pi owns tool discovery, tool execution, model choice, permissions, and sessions. Scout recommends application-model candidates; it does not execute those candidates or change Pi's own model. There are no `/openmerit` lifecycle commands, automatic evaluation setup, scheduler, or LaunchAgent in this adapter.
|
|
53
36
|
|
|
54
|
-
|
|
37
|
+
## Check, update, or remove Pi setup
|
|
55
38
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
## Collect the baseline
|
|
63
|
-
|
|
64
|
-
After setup, instrument the confirmed application target and use the product normally. Report application-task completions and cumulative metric windows through Pi's typed signal tool, including the application model where applicable, sample counts, and durable evidence. Pi's own model, tokens, cost, and latency are orchestration telemetry and do not satisfy product metrics. OpenMerit core checks the stored baseline windows at the approved cadence without calling Pi; missing evidence stays insufficient.
|
|
65
|
-
|
|
66
|
-
## Find the frontier
|
|
67
|
-
|
|
68
|
-
When the baseline meets every required metric threshold, OpenMerit issues the next approved nudges: discover candidates, run controlled challenger trials, and calculate the Pareto frontier. Pi performs that work. OpenMerit checks the returned result against the [Pareto specification](pareto-spec.md).
|
|
39
|
+
```sh
|
|
40
|
+
npx -y openmerit@latest status --client pi --scope user --check
|
|
41
|
+
npx -y openmerit@latest doctor --client pi --scope user
|
|
42
|
+
npx -y openmerit@latest remove --client pi --scope user
|
|
43
|
+
```
|
|
69
44
|
|
|
70
|
-
|
|
45
|
+
Use `--scope project` from the original project root for a project installation. `login` and `logout` accept the same `--client` and `--scope` flags. These commands target that installation, not another client's connection. Updating Pi setup requires explicitly rerunning `install` and starting a new session; no Pi auto-update hooks are installed. Installing or updating the npm package alone does not reconfigure Pi.
|
|
71
46
|
|
|
72
|
-
|
|
47
|
+
See [the Pi extension guide](pi-extension.md) for installed paths, migration from Pi 0.87, and SDK embedding. Use [troubleshooting](troubleshooting.md) for setup failures.
|
|
73
48
|
|
|
74
|
-
|
|
49
|
+
## Evaluate application changes
|
|
75
50
|
|
|
76
|
-
|
|
51
|
+
The standalone `openmerit eval` CLI is unchanged by the new Pi adapter. It evaluates Claude Code, Codex and OpenCode through explicit task, scope, budget and grader configuration; see [agent evaluations](agent-evaluations.md). The core evaluation coordinator remains available to custom harness integrations, but the removed Pi 0.87 lifecycle adapter is not the way to invoke it.
|
package/docs/index.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenMerit documentation
|
|
2
2
|
|
|
3
|
-
These guides
|
|
3
|
+
These guides distinguish current source work from published behavior. OpenMerit **0.1.12** adds native Scout support for Pi **1.5.0**, replacing the old Pi 0.87 evaluation extension. The Inference Terminal and standalone agent-evaluation CLI are separate products and are unchanged by that replacement. The website, hosted samples, Scout service and npm package are deployed independently; dated receipts describe the versions actually tested.
|
|
4
4
|
|
|
5
5
|
## See your inference environment
|
|
6
6
|
|
|
@@ -20,11 +20,15 @@ Start with [installation and setup](getting-started.md) or the [Inference Termin
|
|
|
20
20
|
|
|
21
21
|
For a shortlist before building an integration, the separate [Scout beta](scout.md) accepts a task description and returns up to five evidence-backed model candidates. It is available at [openmerit.ai/scout/](https://openmerit.ai/scout/), with a prompt-only JSON API and MCP tool for coding agents.
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Connect Scout to Pi
|
|
24
24
|
|
|
25
|
-
The
|
|
25
|
+
The thin Pi 1.5.0 adapter uses native MCP and shared Scout guidance. Pi owns tools, models, permissions and sessions; the adapter has no `/openmerit` lifecycle commands, evaluation scheduling, LaunchAgent or automatic updates.
|
|
26
26
|
|
|
27
|
-
Follow [
|
|
27
|
+
Follow [setup](getting-started.md#connect-scout-to-a-coding-agent) and [the Pi guide](pi-extension.md), including browser approval, per-client/scope credentials, explicit reinstall updates and SDK requirements. Registry setup requires OpenMerit 0.1.12 or newer.
|
|
28
|
+
|
|
29
|
+
## Evaluate application changes
|
|
30
|
+
|
|
31
|
+
Use [the standalone evaluation CLI](agent-evaluations.md) for Claude Code, Codex and OpenCode. Custom harnesses may use the core coordinator. The following guides retain core concepts and historical Pi 0.87 workflows; they do not describe the new Scout adapter:
|
|
28
32
|
|
|
29
33
|
- [Metrics and evidence](metrics-and-evidence.md): measurements, sample requirements, and readiness.
|
|
30
34
|
- [Comparisons and swaps](lifecycle.md): baseline, challenger trials, approval, verification, and rollback.
|
|
@@ -33,8 +37,8 @@ Follow [Pi setup](getting-started.md#set-up-model-comparisons-with-pi), then [yo
|
|
|
33
37
|
|
|
34
38
|
## Operate and troubleshoot
|
|
35
39
|
|
|
36
|
-
[
|
|
40
|
+
[Troubleshooting](troubleshooting.md), [security and data](security.md), and [current limitations](roadmap.md) explain current Pi setup and its boundaries. [Commands](commands.md) and [project files and logs](operations.md) also retain explicitly historical Pi lifecycle references alongside standalone/core information; their old pause and recovery commands are not part of the new adapter.
|
|
37
41
|
|
|
38
42
|
## Build an integration
|
|
39
43
|
|
|
40
|
-
Pi
|
|
44
|
+
Pi now supplies a native Scout connection, not an evaluation `HarnessAdapter`. Custom evaluation harnesses can implement the protocol and coordinator boundary described in [architecture](architecture.md) and [the adapter guide](adapter-guide.md). The [Pareto specification](pareto-spec.md) defines comparison rules; [testing and validation](testing.md) distinguishes automated coverage from product evidence.
|
|
@@ -79,7 +79,7 @@ openmerit dash --no-open
|
|
|
79
79
|
| `--demo` | Use only a fictional local sample; no local collectors run |
|
|
80
80
|
| `--help` | Show usage |
|
|
81
81
|
|
|
82
|
-
Ctrl+C stops collection. The terminal has no persistent daemon and is independent of Pi
|
|
82
|
+
Ctrl+C stops collection. The terminal has no persistent daemon and is independent of core evaluation pause/scheduling policy. The unreleased Pi 1.5.0 Scout adapter exposes no pause or scheduling commands.
|
|
83
83
|
|
|
84
84
|
## Repository indexing
|
|
85
85
|
|
package/docs/lifecycle.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Improvement lifecycle
|
|
2
2
|
|
|
3
|
+
**Core reference / historical Pi workflow:** this lifecycle remains available through the coordinator for custom harnesses. Pi-specific actions below describe the removed Pi 0.87 adapter, not the unreleased Pi 1.5.0 native Scout adapter. The replacement has no lifecycle commands, evaluation setup, swaps, or scheduling. See [Pi setup](pi-extension.md) or the separate, unchanged [evaluation CLI](agent-evaluations.md).
|
|
4
|
+
|
|
3
5
|
## Stages
|
|
4
6
|
|
|
5
7
|
1. **Unconfigured** — no confirmed profile exists.
|
package/docs/operations.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Project state and operations
|
|
2
2
|
|
|
3
|
+
**Scope — unreleased Pi replacement:** the evaluation lifecycle files and `/openmerit` commands below describe the core coordinator and historical Pi 0.87 adapter. The Pi 1.5.0 Scout adapter does not create or advance that lifecycle, manage scheduling, or expose those commands. See [current Pi paths and targeted shell commands](pi-extension.md). Terminal files remain current; standalone evaluation files are documented in [agent evaluations](agent-evaluations.md). Preserve older state and separately remove any legacy background job when migrating.
|
|
4
|
+
|
|
3
5
|
## State location
|
|
4
6
|
|
|
5
7
|
Operational data lives under `.openmerit/` in the target product repository. It should be ignored by version control because it can contain local lifecycle state and evidence locations.
|
package/docs/pi-extension.md
CHANGED
|
@@ -2,53 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
## Supported version
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
OpenMerit **0.1.12** adds a Scout adapter for Pi **1.5.0**. It replaces, rather than upgrades in place, the Pi 0.87 evaluation adapter. The `@latest` commands below require OpenMerit 0.1.12 or newer. Package publication and website deployment remain independent releases.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Installation
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
from a checkout, load the source extension with:
|
|
9
|
+
With Node.js 22.19 or newer, npm, and Pi 1.5.0 installed:
|
|
11
10
|
|
|
12
11
|
```sh
|
|
13
|
-
|
|
12
|
+
npx -y openmerit@latest install --client pi --scope user
|
|
14
13
|
```
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
Approve the matching browser device code and start a new Pi session. Scope defaults to `user`; use `--scope project` from the project's root for project-local setup. Each client and scope gets an independent key and approval; project keys are also separated by project. The npm package alone does not configure Pi.
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
The website's **Add to Pi** action is copy-only and sits below the Claude action, with the Pi logo before the label. It copies the installer command; it does not open a Pi deep link or prove installation. The button requires the corresponding Scout website deployment.
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
## Installed files and credentials
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
| File | User scope | Project scope |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| Native extension bundle | `~/.pi/agent/extensions/openmerit-scout.ts` | `.pi/extensions/openmerit-scout.ts` |
|
|
24
|
+
| Credential-path reference | `~/.pi/agent/extensions/openmerit-scout.json` | `.pi/extensions/openmerit-scout.json` |
|
|
25
|
+
| Shared Scout skill | `~/.pi/agent/skills/openmerit-scout/SKILL.md` | `.pi/skills/openmerit-scout/SKILL.md` |
|
|
26
|
+
| Installer ownership record | `~/.pi/agent/openmerit-install.json` | `.pi/openmerit-install.json` |
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
`PI_CODING_AGENT_DIR` overrides the user agent directory. The connection JSON contains a `credentialsPath`, not the key. The default private key paths are `~/.config/openmerit/pi/user/credentials.json` for user scope and `~/.config/openmerit/pi/<project-id>/credentials.json` for project scope. The project ID derives from the resolved project root; run targeted commands from that root. `OPENMERIT_CONFIG_DIR` or `XDG_CONFIG_HOME` can override the private configuration base. Do not copy credentials into the project or model instructions.
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
The extension reads credentials at session startup and registers the `openmerit` HTTP MCP server with direct tool exposure. Authorization is an HTTP header, not prompt content. Missing or invalid configuration produces a sanitized setup diagnostic, not an automatic login. The adapter performs no per-turn HTTP connection checks or credential reads.
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
## Native ownership and shared guidance
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
Pi supplies the MCP connection, tool discovery and execution, permissions, and session management. The thin adapter adds the same Scout rule and skill used by the shared installer as structured system-prompt sections. It leaves the host's model, tool allow/exclude lists, and other prompt sections intact. This is guidance to consult Scout before application-model choices, not enforcement of tool invocation or permission to download, spend, deploy, or change models. Scout's [data-handling policy](scout.md#refresh-and-data-handling) applies to submitted tasks.
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
## Updates and targeted lifecycle commands
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
```sh
|
|
39
|
+
npx -y openmerit@latest status --client pi --scope user --check
|
|
40
|
+
npx -y openmerit@latest doctor --client pi --scope user
|
|
41
|
+
npx -y openmerit@latest login --client pi --scope user
|
|
42
|
+
npx -y openmerit@latest logout --client pi --scope user
|
|
43
|
+
npx -y openmerit@latest remove --client pi --scope user
|
|
44
|
+
```
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
Replace `user` with `project` for a project installation. Removal and logout target that client's scope/key, not a Claude Code installation or another project. Edited or unowned files are not silently overwritten or deleted. Resolve duplicate user/project adapters or existing `openmerit` MCP entries before installing.
|
|
43
47
|
|
|
44
|
-
|
|
48
|
+
Updates are **explicit reinstall only**: rerun `install --client pi` with the same scope and start a new session. There are no Pi auto-update hooks; Claude Code update-hook settings do not apply to Pi.
|
|
45
49
|
|
|
46
|
-
|
|
50
|
+
## SDK embedding
|
|
47
51
|
|
|
48
|
-
|
|
52
|
+
`openmerit/pi` exports `createScoutPiExtension({ credentialsPath })` and a default extension created by that factory. SDK hosts must explicitly load Pi's own **`createMcpExtension()`** alongside the Scout extension; the Scout factory does not create an MCP runtime. The Pi CLI already supplies native MCP. The explicit credential path takes precedence over the installed adjacent connection JSON, with the shared Pi user credential path as the fallback when that JSON is absent. The host supplies its own model, tools, session and permission configuration.
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
## Migration from Pi 0.87
|
|
51
55
|
|
|
52
|
-
|
|
56
|
+
Remove or disable the old `npm:openmerit` Pi package registration before loading this adapter, and explicitly remove any previously authorized background job through its existing management path. New setup does not promise to uninstall a legacy LaunchAgent. Preserve `.openmerit/` evaluation state and evidence if needed; do not delete them as a setup repair.
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
The replacement has no `/openmerit` commands, `openmerit_complete_intent` or `openmerit_report_signal` tools, source preflight, evaluation lifecycle, intent recovery, scheduling, automatic swaps, or LaunchAgent. The [core coordinator](architecture.md) remains available for custom harnesses. The [standalone evaluation CLI](agent-evaluations.md) is unchanged. Older lifecycle guides are retained as historical adapter/core references, not instructions for this Scout adapter.
|
package/docs/roadmap.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Current status
|
|
4
4
|
|
|
5
|
-
The Inference Terminal provides a read-only view of existing application evidence. The Pi
|
|
5
|
+
The Inference Terminal provides a read-only view of existing application evidence. The Pi **1.5.0** adapter in OpenMerit **0.1.12** provides only native Scout MCP and shared guidance, not evaluation coordination. The standalone evaluation CLI and reusable core coordinator remain separate. Neither a populated dashboard nor passing implementation tests establishes that an application has better models, trustworthy evaluations, or reliable unattended automation.
|
|
6
6
|
|
|
7
7
|
## Known limitations
|
|
8
8
|
|
|
@@ -10,10 +10,11 @@ The Inference Terminal provides a read-only view of existing application evidenc
|
|
|
10
10
|
- History and inventory can be incomplete because of source availability and read/parser limits. “All time” means retained supported evidence, not a complete lifetime archive. Cloud account usage is not fetched.
|
|
11
11
|
- Machine and runtime readings describe shared resources; they are not per-request resource measurements. Static endpoints do not prove deployment, availability, or physical location.
|
|
12
12
|
- Hosted samples and the before/after dashboard demo are fictional. Their cost projections and public benchmark screens do not establish application quality or latency.
|
|
13
|
-
- Pi 0.87 is
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
13
|
+
- The Pi 0.87 evaluation adapter is removed in source. Pi 1.5.0 setup needs explicit browser approval, a new session and an explicit installer rerun for updates. It has no lifecycle commands, scheduler, LaunchAgent or auto-update hooks. The host owns tools, model, permissions and sessions; SDK hosts must load Pi's native MCP extension explicitly.
|
|
14
|
+
- Scout rule/skill availability does not guarantee invocation or measured application quality. Missing project policy requires asking; unavailable or insufficient Scout evidence requires pausing the model choice.
|
|
15
|
+
- Custom core evaluation harnesses must establish task-specific evaluations and observability. Generic coding checkpoints cannot replace product telemetry, and structured-result validation cannot prove external evidence is truthful.
|
|
16
|
+
- Background provisioning and unattended validation belong to custom evaluation integrations, not the new Pi adapter. Existing legacy Pi jobs require separate cleanup during migration.
|
|
17
|
+
- Core pause policy does not cancel active intents or stop explicit commands or the standalone terminal. It is not a command exposed by the new Pi adapter.
|
|
17
18
|
- Challenger accounting depends on reported costs. It cannot independently meter provider billing or stop an in-flight request. Use provider spending controls as well as the confirmed evaluation policy.
|
|
18
19
|
- The source interface and hosted dashboard follow the device's light/dark preference. That UI change is not included in npm 0.1.6.
|
|
19
20
|
|
|
@@ -1,81 +1,39 @@
|
|
|
1
|
-
# Scout
|
|
1
|
+
# Scout data policy
|
|
2
2
|
|
|
3
|
-
Updated
|
|
3
|
+
Updated 29 October 2026.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
OpenMerit operates Scout. This policy covers its hosted website and connected clients.
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Don't submit confidential or sensitive information.** Automated redaction is not guaranteed to remove it.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Data we use
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
- **Service data:** Your submitted task and related information are processed by an AI service provider, even with analytics off. We also retain account, authorization and device details needed to provide access.
|
|
12
|
+
- **Optional analytics:** When enabled, we collect usage, recommendations, feedback, setup activity, device/browser categories, performance and error information to improve Scout and fix problems. Account analytics may include your name, verified email and sign-in provider, and may link activity before and after sign-in.
|
|
13
|
+
- **Shared content:** When prompt sharing is enabled, analytics also includes task text and analysis. We use this for product improvement, not foundation model training. There is no session recording.
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
Service providers handle hosting, AI processing, sign-in and analytics on our behalf. They have their own retention and security policies; processing is not guaranteed to stay in one region or have zero retention. External coding agents and linked services have separate policies.
|
|
14
16
|
|
|
15
|
-
##
|
|
17
|
+
## Your choices
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
Manage sharing in [Privacy & analytics](/scout/privacy/). Browser usage analytics and prompt sharing default on unless you previously opted out. Saved opt-outs, Do Not Track and Global Privacy Control are respected.
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
You can disable usage analytics, disable prompt sharing, or stop linking this browser's activity to your account. Unlinking does not remove earlier links or stop separate account-profile analytics; task text can still identify you.
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
Setup analytics defaults on. Set `OPENMERIT_TELEMETRY=0` or `DO_NOT_TRACK=1` to disable it. Installed coding-agent connections do not share prompt content for analytics. Terminal and evaluation analytics remain opt-in. Rerun setup to apply changed preferences to existing installations.
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
| Data | Purpose and collection |
|
|
26
|
-
| --- | --- |
|
|
27
|
-
| Submitted task and model restrictions | Required to interpret the task, find suitable models and return recommendations. Scout sends task information to OpenAI even when analytics is off. |
|
|
28
|
-
| Recommendations and search diagnostics | When usage analytics is enabled, PostHog receives task categories, model IDs, ranks, available quality/cost/latency evidence, timings, cache status and outcomes. These describe recommendations, not execution of those models on your data. |
|
|
29
|
-
| Product interactions and errors | Enabled analytics includes visits, preset selections, sign-in activity, results viewed, evidence opened, copies, provider-link clicks and coding-agent setup activity. API/MCP events record request outcomes. Lifecycle-enabled builds add allowlisted method/tool, reported agent/harness and version, setup/installation correlation and verified-connection diagnostics. A launch request is not proof an app opened, and key authorization is not proof of installation. Error reports use bounded categories and application stack locations, not raw error messages. |
|
|
30
|
-
| Account details | Clerk handles Google/GitHub login. Enabled account analytics can synchronize your name, verified primary email, signup time and connected providers to PostHog. Account and session lifecycle events help us understand onboarding and returning use. |
|
|
31
|
-
| Optional prompt content | Only when prompt sharing is enabled, PostHog also receives the submitted prompt and written task breakdown, for at most three tasks. Prompt text is limited to 4,000 characters, with up to 1,000 characters per excerpt or five-layer field. Common sensitive patterns are removed where detected; this is not guaranteed anonymization. All such text is confined to `$ai_trace.$ai_input_state={prompt,tasks}`; new ordinary `scout_search_details` events contain no prompt, excerpt or layer prose. |
|
|
32
|
-
|
|
33
|
-
Scout does not use session replay, record keystrokes, or automatically capture every page element. Our analytics code does not forward bearer tokens, cookies, raw Clerk identifiers or visitor IP addresses to PostHog. Hosting and authentication providers still process the connection and security information needed to run their services.
|
|
34
|
-
|
|
35
|
-
## Your choices and account linkage
|
|
36
|
-
|
|
37
|
-
Open **Privacy & analytics** in the [Scout footer](/scout/#analytics-settings):
|
|
38
|
-
|
|
39
|
-
- **Share usage and account analytics** controls optional product events and account synchronization. It is on by default unless you opt out or a supported browser privacy signal disables it.
|
|
40
|
-
- **Share my task prompts and breakdowns for product improvement** defaults on only without a stored content choice. Saved off, general opt-out, DNT/GPC and unreadable preference storage keep content off; usage analytics must also be enabled.
|
|
41
|
-
- **Don’t link this browser’s activity to my account** applies to this browser/request only, not your account everywhere. It sends `X-Scout-Analytics-Account: off`.
|
|
42
|
-
- Turning sharing off stops future analytics collection. It does not stop necessary task processing, undo in-flight work or delete information already stored.
|
|
43
|
-
|
|
44
|
-
Scout respects Do Not Track and Global Privacy Control for these analytics. An authenticated browser also communicates its usage preference to the server; the latest received account preference controls background synchronization. A browser that is offline or not signed in cannot update that account preference until it reconnects and authenticates.
|
|
45
|
-
|
|
46
|
-
API/MCP clients can send `X-Scout-Analytics: off` to disable analytics. Prompt text still requires explicit `X-Scout-Analytics-Content: on`; general opt-out and supported privacy signals take precedence. CLI content capture is always off. Older 0.1.8 setup does not inherit this browser's account-linkage setting; the 0.1.9 lifecycle revision explicitly carries usage and unlink preferences into the command and installed headers. Later browser changes do not rewrite existing agent configuration; rerun setup to update it. Request-only refusals in that revision do not overwrite saved account-wide preferences.
|
|
47
|
-
|
|
48
|
-
Enabled signed-in analytics normally uses a stable account identifier linked to the profile above; hashing does not make it anonymous, and a pre-sign-in visit can be joined after login. In unlinking mode the server uses fresh unrelated random identifiers, sends no profile/identify operation, ignores previously linked browser identifiers and supplied trace IDs, and does not return an analytics trace ID for later interactions to reuse. Account opt-out and deletion gates still apply before sending. Clerk profile/lifecycle analytics can continue separately under general usage consent. Past records remain linked; signing out or selecting this option does not unlink them. Unlinked request events cannot support cross-request funnels or automatic account-based historical deletion. Prompt text itself may identify a person: unlinking is not anonymization.
|
|
49
|
-
|
|
50
|
-
## Service providers
|
|
51
|
-
|
|
52
|
-
| Provider | Role |
|
|
53
|
-
| --- | --- |
|
|
54
|
-
| Cloudflare | Hosts Scout, handles requests and rate limits, holds the public model catalogue, and coordinates analytics preferences, webhook receipts and deletion state. |
|
|
55
|
-
| OpenAI | Processes task descriptions and related public evidence for interpretation, matching and query embeddings. Its API retention policies apply; Scout does not promise zero retention by OpenAI. |
|
|
56
|
-
| Clerk, Google and GitHub | Provide authentication and account/session handling. Google or GitHub is contacted according to the sign-in method you choose. |
|
|
57
|
-
| PostHog | Stores optional product/account analytics, recommendation diagnostics and separately enabled prompt content. Scout uses PostHog's EU ingestion endpoint; this is not a claim that every provider processes data only in the EU. |
|
|
58
|
-
|
|
59
|
-
Scout's twice-daily research uses Parallel and public model/benchmark sources. Visitor prompts are not sent to Parallel, benchmark publishers or the recommended-model providers as part of that research. Opening a provider link takes you to a separate service under its own policies.
|
|
25
|
+
Turning sharing off stops future optional collection. It does not stop required processing or delete stored data.
|
|
60
26
|
|
|
61
27
|
## Storage and retention
|
|
62
28
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
- **Account synchronization:** Cloudflare retains preference state and pseudonymous delivery/deletion records, not a second copy of your name, email or prompts. Pending lifecycle events without a known preference are bounded and expire after seven days. Deletion tombstones are retained to prevent delayed events from recreating an account's analytics.
|
|
69
|
-
- **Historical records:** Before the 22 October 2026 consolidation, Scout stored prompts and recommendation evidence in a private Cloudflare Analytics Engine archive. New writes have stopped. That archive follows Cloudflare's three-month retention, may contain unredacted personal information, and is not automatically erased by the PostHog account-deletion flow.
|
|
70
|
-
|
|
71
|
-
OpenAI, Clerk and other providers have their own retention and security policies. A change to Scout's analytics settings does not change those policies. Restrict analytics access to authorized personnel with a product evaluation/debugging need; Scout does not expose a public search-history endpoint. The processors above receive data: this is not a “no third party” service.
|
|
72
|
-
|
|
73
|
-
## Data questions and deletion requests
|
|
74
|
-
|
|
75
|
-
Contact [lazim@openmerit.ai](mailto:lazim@openmerit.ai) for data questions or to request access, correction or deletion. Include the account email and approximate dates, but do not send passwords, session tokens or sensitive prompt content. We may need to verify account ownership before acting. The rights and obligations that apply depend on your location and circumstances.
|
|
29
|
+
- Your browser stores sign-in information, sharing preferences and temporary task drafts.
|
|
30
|
+
- Task data and results may be stored temporarily even with analytics off: short-lived results for 30 seconds and completed-search processing data for seven days. Expiry is not a guarantee of immediate erasure.
|
|
31
|
+
- Newly shared task content has a 30-day analytics retention window. Other analytics and account records may remain longer under provider settings. Backup erasure has not been independently verified.
|
|
32
|
+
- Older task records may fall outside that 30-day policy. A discontinued archive follows a three-month retention period and is not automatically covered by account deletion.
|
|
33
|
+
- We retain access and privacy-preference records as needed to operate the service and honor opt-outs and deletion requests.
|
|
76
34
|
|
|
77
|
-
|
|
35
|
+
## Contact and deletion
|
|
78
36
|
|
|
79
|
-
|
|
37
|
+
For data access, correction or deletion, contact [lazim@openmerit.ai](mailto:lazim@openmerit.ai). We may verify account ownership. Do not send passwords or sensitive task content.
|
|
80
38
|
|
|
81
|
-
|
|
39
|
+
Account deletion requests deletion of linked analytics. Erasure is asynchronous; unlinked activity and historical records may require separate review. Turning off sharing does not delete past data. Your rights depend on applicable law.
|