arkitekt-spec
The wire format of an Arkitekt app: one definition of what an app is, shared by everything that produces or consumes it.
| Model | What it is | Produced by | Consumed by |
|---|---|---|---|
AppManifest, Requirement |
who the app is, which services it needs | arkitekt (from the App) |
kabinet |
Inspection |
what the app declares (rekuest's action language, carried as JSON) | arkitekt inspect all, inside the image |
arkitekt's plugin CLI, kabinet |
Selector (cpu, ram, cuda, rocm, oneapi, label) |
where a flavour may run | a flavour's config.yaml |
kabinet, deployers |
DeploymentsFile |
.arkitekt/deployments.yaml, the images a repo publishes |
arkitekt plugin publish |
kabinet's repo scan |
It also owns the action language (arkitekt_spec.actions: definitions, ports,
implementations) and the declaration layer (arkitekt_spec.declare): AppRegistry, the
@app.action / @app.workflow / @app.declare machinery, structures, and the Task protocol a
runtime implements. SDKs build on it; apps import the same names from
arkitekt. It depends on pydantic, pyyaml and three small
pure-python helpers, and on no runtime, transport or client.
Workflows and recovery
An implementation carries two claims the server keeps:
| Field | Values | Meaning |
|---|---|---|
execution |
PLAIN, WORKFLOW |
Only a WORKFLOW may call other actions; it is resumed when its agent dies, a PLAIN task ends LOST. |
effects |
NONE, REPEATABLE, UNKNOWN, IRREVERSIBLE |
What running it again would do. Information for whoever decides about a lost task, never a rule. |
code_hash pins a resume to the code that started the run. The errors a caller sees
(AgentLost, NonDeterministicWorkflow, NotAWorkflowError, StateChanged) live in
arkitekt_spec.declare.errors, and the workflow helpers (record, retry, hold, guard) are
on the Task protocol.
Compatibility
Every envelope model ignores unknown keys. An inspection is written by the arkitekt inside
an image and read by the host CLI, and deployments.yaml is written by the CLI and read by a
kabinet server that upgrades on its own schedule. Adding a field is therefore a minor change
an older reader survives. A change an older reader must refuse bumps spec_version.
Selectors are the exception: they refuse unknown keys, because they are written by hand and a typo must not silently widen a placement constraint.
from arkitekt_spec import load_deployments, dump_deployments
file = load_deployments(open(".arkitekt/deployments.yaml").read())
python -m arkitekt_spec prints the JSON Schema. The committed snapshot in
tests/fixtures/deployments.schema.json makes every format change show up in review.
Metadata
Release files for arkitekt-spec 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arkitekt_spec-3.0.0.tar.gz | 153.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arkitekt_spec-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 341.3 kB
Release files / arkitekt_spec-3.0.0.tar.gz
| Download URL | arkitekt_spec-3.0.0.tar.gz |
|---|---|
| Size | 153.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b1c44ef29209244c42a859100c8acb508d711f167d7dfbb3a4e7a2566ad5176
|
|
BLAKE2b-256 checksum How to use checksums |
33c55d5b03194261e33a7c73457992d74ed595e8afb1ed8a8e372c5a97a3e6f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / arkitekt_spec-3.0.0-py3-none-any.whl
| Download URL | arkitekt_spec-3.0.0-py3-none-any.whl |
|---|---|
| Size | 188.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ced0e6672a1a6b4f33926b37e9f3a472090d904d5ce3001763bb77d044dda7b9
|
|
BLAKE2b-256 checksum How to use checksums |
dc0fc32e1d1dd91964af3e20e895516e81db2c44932d77226961b854a8c9126f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|