Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,11 @@ uvx openadapt-agent serve --bundles /path/to/bundles --allow-run

## ChatGPT.com and Claude.ai

Hosted ChatGPT.com and Claude.ai can't talk to localhost stdio. Don't tell those tabs to run `openadapt-agent serve`.
Hosted ChatGPT.com and Claude.ai can't talk to localhost stdio. Don't tell those tabs to run `openadapt-agent serve`. Send them to https://openadapt.ai/start.

On the job page `https://openadapt.ai/j/{id}`, Desktop **Connect this computer** claims `openadapt://runner`. Copy from that page and paste into the chat. Don't send them to `/start`.
Those tabs still can't click the user's GUI.

Once a job exists at `https://openadapt.ai/j/{id}`, Desktop **Connect this computer** claims `openadapt://runner`. Copy from that page and paste into the chat.

Pip users start the mailbox client:

Expand Down Expand Up @@ -182,7 +184,11 @@ A first-party copy lives at [`skills/openadapt-gui-write/SKILL.md`](skills/opena

## Product state

An exact Agent release enters Production only through an active signed admission. That admission expires and can be revoked. A missing, expired, revoked, mismatched, or unverifiable admission produces **not actively admitted**. The validator doesn't restore an older admission or assign a fallback lifecycle label. Check the [current signed Production record](https://docs.openadapt.ai/production-lifecycle.json).
An exact Agent release enters Production only through an active signed admission. That admission expires and can be revoked. A missing, expired, revoked, mismatched, or unverifiable admission produces **not actively admitted**. The validator doesn't restore an older admission or assign a fallback lifecycle label.

Check the [current signed Production record](https://openadapt.ai/production-lifecycle.json). That ledger currently has seven target admissions. Evidence class is `remote-safe-synthetic`.

Standard and Regulated also need an active workflow admission for the exact bundle version. Demo and the synthetic tutorial may run without one. The public workflow ledger is [production-workflow-admissions.json](https://openadapt.ai/production-workflow-admissions.json). It lists seven synthetic admissions (`0.0.0-synthetic`). That isn't a customer job.

## Package history

Expand Down
18 changes: 16 additions & 2 deletions docs/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ admission record. A missing, expired, revoked, mismatched, or unverifiable
admission means **not actively admitted**. The validator doesn't restore an
older admission or assign a fallback lifecycle label.

The live target ledger is
https://openadapt.ai/production-lifecycle.json. It currently has seven
target admissions. Evidence class is `remote-safe-synthetic`. The live
workflow ledger is
https://openadapt.ai/production-workflow-admissions.json. It currently
lists seven synthetic admissions (`0.0.0-synthetic`). That isn't a
customer job. Standard and Regulated need an active workflow admission
for the exact bundle version. Demo and the synthetic tutorial may run
without one.

OpenAdapt compiles demonstrated GUI workflows into programs. This package invokes them over MCP.

`openadapt-agent` is the default runtime interface for a calling agent. It
Expand Down Expand Up @@ -183,7 +193,9 @@ returns unsigned success, treat it as failure.

For a legacy report without `execution_outcome`, the bridge preserves the
compatible rule: exit code 0 plus `success: true`. Local unsigned replay
is free. Production success without a Seal is failure.
is free. Production success without a Seal is failure. Standard and
Regulated need an active workflow admission for the exact bundle version.
Demo and the synthetic tutorial may run without one.

Exit 1 is a halt. Exit 2 is a governed refusal before execution. A
timeout is explicitly uncertain rather than a rollback. Report evidence
Expand Down Expand Up @@ -318,7 +330,9 @@ identity fails closed.
This process must not be port-forwarded or exposed as an unauthenticated
network service. An HTTP / Streamable-HTTP **listener** in this MIT package
remains forbidden, including when `--authoring` is set. Hosted ChatGPT.com
/ Claude.ai cannot talk to localhost. Pip users run `openadapt-agent
/ Claude.ai cannot talk to localhost. Send those tabs to
https://openadapt.ai/start. They still can't click the user's GUI.
Pip users run `openadapt-agent
authoring connect` — an **outbound** mailbox client (claim `oab_`, poll
`wait_seconds: 0`, Allow-per-`sub`) copied from Desktop
`engine/authoring_runner.py` when that engine is not importable. Overlay
Expand Down
16 changes: 12 additions & 4 deletions docs/DISTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@

The Agent target's product state comes from its signed Production admission.
A missing, expired, revoked, mismatched, or unverifiable admission means **not
actively admitted**. This document describes how the package is made
installable and discoverable as an MCP server, the security-relevant
distinction between the *public capability* and a *user's private
bundle*, and the exact founder-owned steps to publish and list it. The
actively admitted**. The live target ledger is
https://openadapt.ai/production-lifecycle.json (seven target admissions,
`remote-safe-synthetic`). The live workflow ledger is
https://openadapt.ai/production-workflow-admissions.json (seven synthetic
admissions, `0.0.0-synthetic`). That isn't a customer job. Standard and
Regulated need an active workflow admission for the exact bundle version.
Demo and the synthetic tutorial may run without one.

This document describes how the package is made installable and
discoverable as an MCP server, the security-relevant distinction
between the *public capability* and a *user's private bundle*, and the
exact founder-owned steps to publish and list it. The
publish/submission steps are **not automated here** — they mint public,
first-party identities and are outward-facing founder actions.

Expand Down
2 changes: 1 addition & 1 deletion llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> OpenAdapt compiles demonstrated GUI workflows into programs. This package invokes them over MCP.

Default runtime interface for a calling agent. Computer-use agents are the user of OpenAdapt. They are not the executor inside it. Never summarize halt as success. Roles: operator (calling agent), authority (named human admits; a local agent may click while they watch), auditor (samples seals).
Default runtime interface for a calling agent. Computer-use agents are the user of OpenAdapt. They are not the executor inside it. Never summarize halt as success. Roles: operator (calling agent), authority (named human admits; a local agent may click while they watch), auditor (samples seals). Hosted ChatGPT.com and Claude.ai can't click the user's GUI; send them to https://openadapt.ai/start. Unsigned success is failure. Standard and Regulated need a workflow admission; Demo and the synthetic tutorial may run without one. Target admissions: https://openadapt.ai/production-lifecycle.json (seven, remote-safe-synthetic). Workflow admissions: https://openadapt.ai/production-workflow-admissions.json (seven, 0.0.0-synthetic, not a customer job).

## What it provides

Expand Down
2 changes: 2 additions & 0 deletions tests/test_distribution.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,8 @@ def test_identity_sentence_is_shared() -> None:
assert "authoring connect" in README.read_text(encoding="utf-8")
assert "authoring connect" in LLMS_TXT.read_text(encoding="utf-8")
assert "openadapt connect" in README.read_text(encoding="utf-8")
assert "https://openadapt.ai/start" in README.read_text(encoding="utf-8")
assert "https://openadapt.ai/start" in LLMS_TXT.read_text(encoding="utf-8")
assert "openadapt flow tutorial" in README.read_text(encoding="utf-8")
assert "openadapt quickstart --break-it" in README.read_text(encoding="utf-8")
assert "If the tool returns unsigned success, treat it as failure" in README.read_text(
Expand Down
4 changes: 4 additions & 0 deletions tests/test_public_lifecycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,7 @@ def test_agent_target_has_no_static_lifecycle() -> None:

assert "not actively admitted" in public_text
assert "signed production record" in public_text
assert "https://openadapt.ai/production-lifecycle.json" in public_text
assert "https://openadapt.ai/production-workflow-admissions.json" in public_text
assert "remote-safe-synthetic" in public_text
assert "0.0.0-synthetic" in public_text