Skip to main content
aaiclick logo

aaiclick

aaiclick is a data orchestration framework built to make distributed computing easy. Platform advantages:

  1. Dynamic Task Allocation — Tasks spawn tasks, so the pipeline shapes itself to the data while it runs. A task is simply a Python function callback, or a container pinned by image tag or git SHA; both mix in one pipeline.
  2. Multiple Languages — Write tasks as plain functions in Python or Java — or bring any language you like through the simple JSON Task Interface.
  3. Pandas-like Objects on ClickHouse — ClickHouse tables behave like ordinary Python objects: pass them between tasks, operate on them pandas-style, and let lifecycle management clean them up. The data never leaves ClickHouse.
  4. Agent Friendly (MCP) — Every operation is recorded. Your coding agent (Claude Code, Codex, any MCP client) answers "how did this value get here?" straight from the lineage.
  5. Data Visualization Included — A built-in web UI to browse objects, run queries, watch job graphs, and view agent-authored dashboards over your data.

Early stage — looking for early adopters to join the ride and provide feedback.

Installation

The base install includes embedded chdb and SQLite — no external servers needed:

pip install aaiclick
python -m aaiclick setup

For a distributed deployment (remote ClickHouse server + PostgreSQL):

pip install "aaiclick[distributed]"

For lineage triage with your coding agent (Claude Code, Codex, any MCP client):

pip install "aaiclick[server]"   # or all extras: pip install "aaiclick[all]"
python -m aaiclick local start   # REST + MCP server on http://127.0.0.1:5255

Then point the agent at http://127.0.0.1:5255/mcp — see the Lineage guide.

Orchestration

Define tasks and jobs with decorators — all data operations execute as ClickHouse queries:

from aaiclick import create_object_from_value
from aaiclick.orchestration import job, task

@task
async def load_sales():
    return await create_object_from_value({
        "region": ["US", "EU", "US", "EU", "US"],
        "amount": [500, 300, 150, 200, 80],
    })

@task
async def analyze(sales) -> dict:
    # GROUP BY + SUM runs as a single ClickHouse query; return a plain dict
    by_region = await sales.group_by("region").sum("amount")
    return await by_region.data()  # → {'region': ['US', 'EU'], 'amount': [730, 500]}

@task
async def report(summary: dict):
    # receives the plain Python dict returned by analyze()
    print(f"Regions: {summary['region']}")  # → Regions: ['US', 'EU']
    print(f"Amounts: {summary['amount']}")  # → Amounts: [730, 500]
    print(f"Total:   {sum(summary['amount'])}")  # → Total: 1230

@job("sales_pipeline")
def sales_pipeline():
    sales = load_sales()                # a Task, not data — nothing runs yet
    summary = analyze(sales=sales)      # gets the sales task's return value at runtime
    return report(summary=summary)      # the dict flows to report()

if __name__ == "__main__":
    from aaiclick.orchestration import job_test
    job_test(sales_pipeline)  # runs all tasks locally for debugging
python sales_pipeline.py

Data Operation Only Mode

Use object_context() directly for interactive work without orchestration. Decorate an async function to wrap its whole body in a context:

import asyncio
from aaiclick import create_object_from_value
from aaiclick.data.object_context import object_context

@object_context()
async def main():
    prices = await create_object_from_value([10.0, 20.0, 30.0])

    total = prices * 1.1                         # LazyOperator — no DB call yet
    print(await total.data())                    # → [11.0, 22.0, 33.0]
    print(await total.mean().data())             # → 22.0

asyncio.run(main())

object_context() also works as an async with block when you only need part of a function inside the context.

Documentation

aaiclick.readthedocs.io

License

MIT License - see LICENSE for details.

Metadata

Release files for aaiclick 0.0.29

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

Source distribution (sdist)

Source distribution for aaiclick 0.0.29
File Size Uploaded Provenance Actions
aaiclick-0.0.29.tar.gz 1.8 MB With provenance Details for aaiclick-0.0.29.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for aaiclick 0.0.29
File Interpreter ABI Platform Actions
aaiclick-0.0.29-py3-none-any.whl Python 3 none any Details for aaiclick-0.0.29-py3-none-any.whl

Total release size: 2.9 MB

Release files / aaiclick-0.0.29.tar.gz

Download URL aaiclick-0.0.29.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
82baf825c953e3f4d98f91561d9bd946e7b81032779854b4fc28fce03f69cd7c
BLAKE2b-256 checksum
How to use checksums
6da7b149651ea96036277a20d791159b73dec022786c3dadd4fe76c723710160
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 23, 2026.

Transparency log

Release files / aaiclick-0.0.29-py3-none-any.whl

Download URL aaiclick-0.0.29-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
303d174e1277be95c026d04520ce2f5f9564db31464dce7f01a0d2a126a08479
BLAKE2b-256 checksum
How to use checksums
1ffcc2ba61a5f2258ac0dc156a12fa8ef0b5a8f86393edfdc2d076a5f30cd731
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 23, 2026.

Transparency log

Security for aaiclick 0.0.29

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for aaiclick-0.0.29.tar.gz

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 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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