Metadata-Version: 2.4
Name: arkitekt-next
Version: 1.3.0
Summary: client for the arkitekt_next platform
Author-email: jhnnsrs <jhnnsrs@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: <4,>=3.11
Requires-Dist: click>=8.2.0
Requires-Dist: dokker>=2.6.0
Requires-Dist: fakts-next>=4.1.0
Requires-Dist: kabinet>=1.0.3
Requires-Dist: koil>=3.3.1
Requires-Dist: platformdirs>=4.5.0
Requires-Dist: py-machineid>=0.8.1
Requires-Dist: rath>=3.12.0
Requires-Dist: rekuest-next>=2.1.0
Requires-Dist: rich-click>=1.8.8
Requires-Dist: semver>=3.0.4
Requires-Dist: turms>=1.0.0
Requires-Dist: watchfiles>=1.0.5
Provides-Extra: all
Requires-Dist: elektro>=1.3.0; extra == 'all'
Requires-Dist: fluss-next>=1.0.0; extra == 'all'
Requires-Dist: kabinet>=1.0.3; extra == 'all'
Requires-Dist: mikro-next>=2.0.0; extra == 'all'
Requires-Dist: reaktion-next>=0.4.1; extra == 'all'
Requires-Dist: rekuest-next>=2.1.0; extra == 'all'
Requires-Dist: rich-click>=1.6.1; extra == 'all'
Requires-Dist: semver>=3.0.1; extra == 'all'
Requires-Dist: turms>=1.0.0; extra == 'all'
Requires-Dist: unlok-next>=1.3.1; extra == 'all'
Requires-Dist: watchfiles>=0.18.1; extra == 'all'
Provides-Extra: alpaka
Requires-Dist: alpaka>=1.0.0; extra == 'alpaka'
Provides-Extra: build
Requires-Dist: uv>=0.7.12; extra == 'build'
Provides-Extra: cli
Requires-Dist: turms>=1.0.0; extra == 'cli'
Provides-Extra: elektro
Requires-Dist: elektro>=1.3.0; extra == 'elektro'
Provides-Extra: extended
Requires-Dist: alpaka>=1.0.0; extra == 'extended'
Requires-Dist: kraph>=0.5.1; extra == 'extended'
Provides-Extra: fluss
Requires-Dist: fluss-next>=1.0.0; extra == 'fluss'
Provides-Extra: kabinet
Requires-Dist: kabinet>=1.0.3; extra == 'kabinet'
Provides-Extra: kraph
Requires-Dist: kraph>=0.5.1; extra == 'kraph'
Provides-Extra: lovekit
Requires-Dist: lovekit>=1.2.1; extra == 'lovekit'
Provides-Extra: mikro
Requires-Dist: mikro-next>=2.0.0; extra == 'mikro'
Provides-Extra: reaktion
Requires-Dist: reaktion-next>=0.4.1; extra == 'reaktion'
Provides-Extra: unlok
Requires-Dist: unlok-next>=1.3.1; extra == 'unlok'
Description-Content-Type: text/markdown

<p align="center">
  <h1 align="center">arkitekt-next</h1>
</p>

<p align="center">
  <em>Turn your Python functions into apps you can orchestrate, share, and scale.</em>
</p>

<p align="center">
  <a href="https://codecov.io/gh/jhnnsrs/arkitekt_next"><img src="https://codecov.io/gh/jhnnsrs/arkitekt_next/branch/master/graph/badge.svg?token=UGXEA2THBV" alt="codecov"></a>
  <a href="https://pypi.org/project/arkitekt_next/"><img src="https://badge.fury.io/py/arkitekt_next.svg" alt="PyPI version"></a>
  <a href="https://pypi.python.org/pypi/arkitekt_next/"><img src="https://img.shields.io/pypi/pyversions/arkitekt_next.svg" alt="PyPI pyversions"></a>
  <a href="https://pypi.python.org/pypi/arkitekt_next/"><img src="https://img.shields.io/pypi/status/arkitekt_next.svg" alt="PyPI status"></a>
  <a href="https://arkitekt.live"><img src="https://img.shields.io/badge/docs-arkitekt.live-blue" alt="Documentation"></a>
</p>

---

## What is Arkitekt?

[**Arkitekt**](https://arkitekt.live) 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](https://arkitekt.live)**.

## Installation

```bash
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:

```bash
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.

## Quickstart

### 1. Create an app

```bash
mkdir my-app && cd my-app
arkitekt-next init
```

This walks you through creating an app and writes a manifest (identifier, version, entrypoint, scopes)
into `.arkitekt_next/`.

### 2. Register your functions

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.

```python
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 greeting
```

### 3. Run it

```bash
arkitekt-next run dev
```

`run 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 run prod`.

## The CLI

`arkitekt-next` ships a batteries-included CLI for the whole app lifecycle:

| Command | What it does |
| --- | --- |
| `init` | Scaffold a new app and its manifest. |
| `run dev` | Run the app locally with hot reloading. |
| `run prod` | Run the app in production mode. |
| `gen` | Generate typed API clients from GraphQL schemas. |
| `manifest` | Inspect and manage your app's manifest. |
| `inspect` | Inspect an app's actions, variables, and requirements. |
| `call` | Call registered functions on a remote server. |
| `kabinet` | Build, validate, and publish your app as a Docker deployment. |

See the full reference in **[docs/cli.md](docs/cli.md)**.

## Working with data

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`](https://arkitekt.live) 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 & links

- 📚 **Documentation:** [arkitekt.live](https://arkitekt.live)
- 🧰 **CLI reference:** [docs/cli.md](docs/cli.md)
- 📦 **PyPI:** [pypi.org/project/arkitekt-next](https://pypi.org/project/arkitekt_next/)
- 🐙 **Source:** [github.com/jhnnsrs/arkitekt_next](https://github.com/jhnnsrs/arkitekt_next)

## License

`arkitekt-next` is released under the [MIT License](LICENSE).
