Passports¶
A passport is a versioned, machine-readable description of an object. This page is only the two passports that describe you and this machine: the developer passport and the device passport. Component, setup, and project passports are different objects with different commands.
The developer passport declares preferences. The device passport records what is observable on this machine. Those facts are not interchangeable. A field that belongs to the environment is refused on the developer passport, and a preference is not an observation.
Commands¶
| Command | Mutability | Confirmation | When |
|---|---|---|---|
ai-stp passport developer init |
apply |
none |
Create the developer passport of this installation. |
ai-stp passport developer show |
read |
none |
Show the developer passport at its current head. |
ai-stp passport developer update |
apply |
none |
Declare developer facts, adding one revision. |
ai-stp passport device refresh |
apply |
none |
Create this device passport, or bring it up to what is observable now. |
ai-stp passport device show |
read |
none |
Show this device passport at its current head. |
passport developer init is idempotent: running it twice is a no-op
rather than a second passport. passport device refresh writes a
revision only when something actually changed, but it can add history,
so the class is apply.
Typical path¶
After the device identity exists:
ai-stp device init --json
ai-stp passport developer init --json
ai-stp passport developer show --json
ai-stp passport device refresh --json
ai-stp passport device show --json
To declare developer facts, adding one revision:
--set is required on update. Repeat it for several fields. The form
is name=value; a comma-separated value becomes a list. Exact field
names come from ai-stp help --agent --json and from a refused call
that names the allowed set.
Local work does not need an account. Before sign-in the owner is a
local account_… minted on first use. Sign-in transfers ownership to
the server's account as an ordinary revision. It does not rewrite
history.
Developer passport¶
The developer passport holds declared facts about the person using this installation. The closed field list is:
| Field | What it is for |
|---|---|
role |
how you describe your role |
typical_tasks |
the work you usually ask the agent to do |
priorities |
what should win when goals compete |
preferred_languages |
languages you prefer to work in |
preferred_harnesses |
harnesses you prefer to compose for |
autonomy |
how far the agent may go without asking |
These never belong on the developer passport. They are environment observations and they belong to the device:
operating_systemarchitectureinstalled_harnessesharness_versionstool_versions
Writing one of those with passport developer update is refused.
passport developer init¶
Create the developer passport of this installation.
It creates durable state. A second run returns the existing head. It
does not invent preferences: empty facts are valid until you declare
them with update.
passport developer show¶
Show the developer passport at its current head.
This is a read. If the passport was never created, the command refuses
with AI_STP_NOT_FOUND. Observing does not mint it.
passport developer update¶
Declare developer facts, adding one revision.
Each successful call adds one revision on the current head. The previous revision remains in history. There is no in-place edit. Unknown names are refused. Environment names are refused. Secrets are not representable here.
Device passport¶
The device passport describes the environment: operating system,
architecture, installed harnesses, versions the toolchain can see.
It is not the device identity. The identity is device_id plus a key
pair; see Device.
passport device refresh¶
Create this device passport, or bring it up to what is observable now.
If nothing observable changed, the head stays where it was. If something changed, a new revision is recorded. Either way the command is an apply, not a read: it is allowed to add history.
Refresh does not install a harness, a toolchain, or an Agent Skill. It records what is already there.
passport device show¶
Show this device passport at its current head.
This is a read. If the passport was never created, the command refuses
and next_actions names passport device refresh.
What a successful envelope contains¶
All five commands return the same result shape in data:
| Field | What it is |
|---|---|
kind |
developer or device on this page |
stable_id |
the passport's stable identifier |
revision_id |
the current head revision |
parent_revision_ids |
what this revision descends from |
owner_id |
the local or account owner |
facts |
the declared or observed facts at this head |
created_at |
when this revision was recorded |
schema_version |
the schema major of this view |
This is a view, not the passport bytes themselves. The envelope and its facts are owned by the passport model. What the CLI adds is the local position: which revision is current, and what it descends from.
The envelope also carries ok, warnings, next_actions,
request_id, operation_id, and schema_version.
kind on other commands may also be project, component, or
setup. Those are not this page. Project passports are
Project. Component passports are
Component passport.
What these commands never do¶
- put secrets,
.envbodies, or tokens into a passport; - copy OS or harness observations onto the developer passport;
- copy preferences onto the device passport;
- create a device identity (
device initdoes that); - publish anything to the catalog;
- write a harness target.
Typical refusals¶
| What you see | What it means | What to do |
|---|---|---|
AI_STP_NOT_FOUND on developer show |
the developer passport was never created | ai-stp passport developer init --json |
AI_STP_NOT_FOUND on device show |
the device passport was never created | ai-stp passport device refresh --json |
AI_STP_VALIDATION_ERROR on update |
unknown field, environment field, or missing --set |
use a developer field; read the allowed set in details |
doctor reports no device |
identity is missing, so device facts cannot be observed honestly | ai-stp device init --json first |
expecting device show to print OS facts |
that is the passport, not the identity | ai-stp passport device show --json |
Related pages¶
| Page | Why |
|---|---|
| Concepts | what a passport is |
| Device | identity, not environment |
| Project | project passport pins an index |
| Component passport | passports of adopted components |
| Sign-in | ownership transfer on first login |
| Sync | pushing a developer-passport head |
| Quickstart for people | first-run identity and passports |
Flags from ai-stp help --agent --json
If help --agent disagrees with a flag on this page, the CLI wins.
Optional flags are not listed here. Read them from the descriptor.
passport developer update requires --set.