aaiclick
aaiclick is a data orchestration framework built to make distributed computing easy. Platform advantages:
- 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.
- Multiple Languages — Write tasks as plain functions in Python or Java — or bring any language you like through the simple JSON Task Interface.
- 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.
- 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.
- 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
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.