Skip to main content

konstruktor

Create and manage Arkitekt deployments — the konstruktor CLI in a wheel, and a Python interface to it.

pip install konstruktor

The wheel carries the CLI itself, so that is the whole install: konstruktor is on your PATH (and python -m konstruktor runs it), and the Python interface below always drives the generator it was released with. Docker has to be running.

Everything that decides what a deployment looks like lives in the CLI. This package runs it and reads back what it wrote — nothing more.

A deployment from Python

from konstruktor import create_hub

hub = create_hub("./hub", services=["rekuest", "mikro"], redeem_tokens=2)

hub.fakts_url                   # http://localhost:<port> — where an app is pointed
hub.redeem_token("my-app")      # what the app trades for a client, with no browser
hub.services["mikro"].url       # http://localhost:<port>/mikro
hub.logs("mikro")
hub.destroy()

A hub can also be made from images instead of names. Each image is asked which service it is, so a client library only has to know the image that hosts it:

hub = create_hub("./hub", service_images=["jhnnsrs/mikro:7"])

Rekuest then runs only if one of the images is Rekuest's.

create_hub builds a self-contained hub: the services you name, and a coordination server of their own, behind one gateway on one port (konstruktor hub create --server local). Nobody has to accept it and nothing leaves the machine. It returns once everything a client opens answers.

Connecting an app to it takes the address and a redeem token:

from arkitekt import App, connect

app = App("my-app", "0.1.0", services=[...])
with connect(app, url=hub.fakts_url, redeem_token=hub.redeem_token("my-app")) as runtime:
    ...

or, for an app in another process, hub.env("my-app") — FAKTS_URL and FAKTS_REDEEM_TOKEN. An app in a container on the hub's own docker network points at http://gateway instead: the hub can be logged into at any address it answers on.

One redeem token serves one app. The coordination server pins a token to the first app that redeems it, so redeem_tokens= is how many apps can connect, and hub.redeem_token(name) hands each name its own.

To run a particular build of a service rather than the one a new hub gets, pin it by its name in the stack: create_hub(..., images={"rekuest": "jhnnsrs/rekuest:1.2.3"}).

With pytest

Installing the package registers a pytest plugin:

import pytest


@pytest.fixture(scope="session")
def hub(konstruktor_hub):
    return konstruktor_hub(services=["rekuest", "mikro"], redeem_tokens=2)


@pytest.mark.konstruktor
def test_my_app(hub):
    ...
  • konstruktor_hub is a session-scoped factory. Every hub it makes is destroyed — containers, volumes and folder — when the session ends.
  • Tests marked konstruktor are skipped where Docker is not running.
  • A failed test gets the hub's container logs attached to its report.
  • Hubs live in a registry of their own, so they never show up beside your real ones.
  • A session that is killed leaves containers behind; the next session removes them.

Which build of a service a run tests against is usually the job's to say, not the suite's. Set KONSTRUKTOR_IMAGES where the suite runs and every hub created there uses those images, for the services it has:

KONSTRUKTOR_IMAGES=rekuest=jhnnsrs/rekuest:1.2.3,mikro=jhnnsrs/mikro:6.1.0 pytest -m konstruktor
option
--konstruktor-keep leave the hubs running after the session, and print where they are
--konstruktor-timeout seconds a hub gets to answer after it is started (600)
--konstruktor-bin the executable to use, instead of $KONSTRUKTOR_BIN or the one in the wheel

From a source checkout

cargo build -p konstruktor-cli
KONSTRUKTOR_BIN=target/debug/konstruktor PYTHONPATH=python python -m pytest python/tests

Metadata

Release files for konstruktor 0.16.0

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

Built distributions (wheels)

Table of built distributions (wheels) for konstruktor 0.16.0
File
konstruktor-0.16.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
konstruktor-0.16.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
konstruktor-0.16.0-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
konstruktor-0.16.0-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
konstruktor-0.16.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
konstruktor-0.16.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 31.9 MB

Release files / konstruktor-0.16.0-py3-none-win_amd64.whl

Download URL konstruktor-0.16.0-py3-none-win_amd64.whl
Size 5.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
829ebaba5c87768b9927c7f142be1d7a1f4934b156aa4b19a21a51532cfa1ed8
BLAKE2b-256 checksum
How to use checksums
0d5ac902c2f71b475464c24b0d3bc019907e16fa8aa3c5cf411fdba46925dad0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / konstruktor-0.16.0-py3-none-musllinux_1_2_x86_64.whl

Download URL konstruktor-0.16.0-py3-none-musllinux_1_2_x86_64.whl
Size 5.6 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
1201c61dca313861d96434c731a3ce7a5cf1a98bca3222cfdea6068dd262085c
BLAKE2b-256 checksum
How to use checksums
ee4cf46172e76983462730525230a1727050b5e6af56a21501d05aee42d9811f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / konstruktor-0.16.0-py3-none-manylinux_2_28_x86_64.whl

Download URL konstruktor-0.16.0-py3-none-manylinux_2_28_x86_64.whl
Size 5.5 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
75640fb668c65216349ceba65ef95d1121dd2eaec9bcbb28582f9c521f399e6e
BLAKE2b-256 checksum
How to use checksums
31e61ecb489537823e65b34bc97f002d01ca395eb4aff6d6bea6016410ce67da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / konstruktor-0.16.0-py3-none-manylinux_2_28_aarch64.whl

Download URL konstruktor-0.16.0-py3-none-manylinux_2_28_aarch64.whl
Size 5.1 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
bee9ead087c97650235052114fe34fc991f0cc6eb574dca036098303238c3d75
BLAKE2b-256 checksum
How to use checksums
52cab56263b02cd39004c54b0ef36033710fd326b7c2460a676a0c34331ea0dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / konstruktor-0.16.0-py3-none-macosx_11_0_arm64.whl

Download URL konstruktor-0.16.0-py3-none-macosx_11_0_arm64.whl
Size 5.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7cc20abd1f54e8803f33d6bb9fbcfc1ebde87af3a9c7c5aae9c4fb2c8b528c1b
BLAKE2b-256 checksum
How to use checksums
194cf3a35799921b5ba4f986d3a1026a6ca7fd4d3fb940d6d8a7f46515e03b42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / konstruktor-0.16.0-py3-none-macosx_10_12_x86_64.whl

Download URL konstruktor-0.16.0-py3-none-macosx_10_12_x86_64.whl
Size 5.3 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
3b1f1b810bb71b5f752b5b37ab8186a128918d3648a46de013fd83eb7f9bd61c
BLAKE2b-256 checksum
How to use checksums
4487c57e43a0e2167833714f0f54d1342d8319e2373a970b114ea6bde2440b1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.23.1

6 release files

0.23.0

6 release files

0.22.0

6 release files

0.21.0

6 release files

0.20.0

6 release files

0.19.0

6 release files

This release

0.16.0 This release

6 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