Skip to main content

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.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arkitekt-spec 3.8.0
File Size Uploaded
arkitekt_spec-3.8.0.tar.gz 193.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arkitekt-spec 3.8.0
File Interpreter ABI Platform
arkitekt_spec-3.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 424.7 kB

Release files / arkitekt_spec-3.8.0.tar.gz

Download URL arkitekt_spec-3.8.0.tar.gz
Size 193.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0d94ed56185cfa7633b9bb7cc7cf2ef524a981aa01045bbd2f334d587e9a0f03
BLAKE2b-256 checksum
How to use checksums
afe5d630a9e1e836cb7e70b832c39ddff424c510269aedbdbeb92483e54c2aa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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.8.0-py3-none-any.whl

Download URL arkitekt_spec-3.8.0-py3-none-any.whl
Size 231.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f098256dffc1ef66057ec1f6d242dcdb5cc8ca9902b015ae288e30eb39a92f2
BLAKE2b-256 checksum
How to use checksums
b191511a461e06b30f062dc1af146d247170c632d119ac10baa14a2a8d522dba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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 history Release notifications | RSS feed

3.12.0

2 release files

3.11.0

2 release files

3.10.0

2 release files

3.9.0

2 release files

This release

3.8.0 This release

2 release files

3.7.0

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page