Turn your Python functions into apps you can orchestrate, share, and scale.
Arkitekt is an open platform for building, connecting, and orchestrating
computational apps. arkitekt-next is its Python client: a framework that takes your ordinary Python
functions and exposes them as remotely callable, orchestratable building blocks — without you having
to write servers, APIs, message queues, or UIs.
Annotate a function, run your app, and it becomes available on an Arkitekt server where it can be:
- Called from anywhere — other apps, notebooks, scripts, or the web UI.
- Composed into real-time workflows that wire your functions together.
- Given a GUI automatically, generated from your Python type hints.
- Shared with your team behind central authentication and permissions.
- Packaged and deployed as a Docker container with a single command.
Arkitekt grew out of the needs of data-intensive science (it has first-class extensions for microscopy, imaging, and graph data), but the core is domain-agnostic — any Python workload fits.
📚 The best place to understand the platform and its concepts is the documentation at arkitekt.live.
pip install "arkitekt-next[all]"This installs everything, including the arkitekt-next command line interface used to create, develop,
containerize, and deploy apps.
Prefer a lean install? Pick only the extras you need:
pip install "arkitekt-next[cli]" # the CLI + app development tooling
pip install "arkitekt-next[mikro]" # microscopy / imaging data
pip install "arkitekt-next[kabinet]" # Docker packaging & deployment
pip install "arkitekt-next[fluss]" # workflow orchestration
pip install "arkitekt-next[elektro]" # electrophysiology data
pip install "arkitekt-next[alpaka]" # want to talk to LLMs? This one's for you.arkitekt-next requires Python 3.11+ and builds on the asyncio and pydantic stacks.
mkdir my-app && cd my-app
arkitekt-next app initThis walks you through creating an app and writes a manifest (identifier, version, entrypoint, scopes)
into .arkitekt_next/.
Any function you decorate with @register becomes a callable building block on the platform. Its
arguments and return values are inferred from your type hints — which also drive validation,
documentation, and the auto-generated GUI.
from arkitekt_next import register
@register
def greet(name: str, excited: bool = False) -> str:
"""Greet a person by name.
Args:
name: Who to greet.
excited: Add some enthusiasm.
"""
greeting = f"Hello, {name}"
return greeting + "!" if excited else greetingarkitekt-next app run devrun dev connects your app to a local or remote Arkitekt server with hot reloading — edit your
code and the app reloads automatically. When you are ready for production, use arkitekt-next app run prod.
arkitekt-next is the command line for all things Arkitekt — one tool across
the whole platform lifecycle. It absorbed the standalone arkitekt-server tool,
so the same binary that builds your apps also stands up a deployment:
| Command group | What it does |
|---|---|
app |
Build, run and deploy apps from your Python code — scaffold (init), run locally (run dev/run prod), generate typed clients (gen), manage the manifest, inspect, and call functions. |
plugin |
Containerize your app into flavours and publish it as a deployable plugin. |
hub · coord · hubinator · engine |
Run the server — the data/compute services, an auth coordinator, the full all-in-one stack, or a standalone deployer. |
mesh |
Join this machine to the deployment's private WireGuard mesh. |
self |
Manage your Arkitekt install — upgrade the SDK, print versions, dump diagnostics. |
arkitekt-next app init # scaffold an app
arkitekt-next app run dev # run it with hot reloading
arkitekt-next hubinator init # stand up an all-in-one server to run it againstSee the full reference in docs/cli.md.
Arkitekt automatically serializes and documents standard Python types — str, bool, int, float,
Enum, list, and dict. For heavier data (images, arrays, large objects), the platform follows a
store-by-reference model: data lives in a central, scalable store and only a lightweight reference
travels between apps. Extensions like mikro provide ready-made structures for
this, and you can define your own.
See the documentation for details on custom data structures and storage backends.
- 📚 Documentation: arkitekt.live
- 🧰 CLI reference: docs/cli.md
- 📦 PyPI: pypi.org/project/arkitekt-next
- 🐙 Source: github.com/jhnnsrs/arkitekt_next
arkitekt-next is released under the MIT License.