LlamaIndex tool spec for chDB, the in-process ClickHouse engine: analytical SQL over local files, object storage, and remote databases with engine-level read-only safety.
Project description
LlamaIndex Tools Integration: chDB
Give agents analytical SQL over local and remote data with chDB, the in-process ClickHouse engine. The engine runs inside the Python process — no server to start, no connection string, no credentials — and queries local files (Parquet/CSV/JSON), object storage, and remote databases through ClickHouse table functions.
Installation
pip install llama-index-tools-chdb
Usage
from llama_index.tools.chdb import ChDBToolSpec
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI
spec = ChDBToolSpec(attachments={"events": "data/events.parquet"})
agent = FunctionAgent(
tools=spec.to_tool_list(),
llm=OpenAI(model="gpt-4o-mini"),
)
print(await agent.run("What are the top 5 event types by count?"))
The spec exposes seven tools, mirroring the tool surface chDB ships for agents (chdb.agents):
run_select_query— read-only ClickHouse SQL with{name:Type}parameter binding (full dialect: 1000+ functions, window functions, arrays, JSON)list_databases,list_tables,describe_table,get_sample_data,list_functions— schema discovery, including describing table-function expressions such ass3('https://bucket/f.parquet','Parquet')attach_file— register a local file as a named table (writable sessions only; on read-only sessions declare files via theattachmentsargument instead)
Every tool has an async twin (arun_select_query, …) backed by the engine's native async path, so to_tool_list() produces tools usable in both sync and async agents.
Safety defaults
- Read-only by default. Sessions are locked with the ClickHouse
readonly=2setting:INSERT/CREATE/ALTER/DROPare rejected by the engine (not by prompt), whileSELECTand thefile()/s3()/url()table functions keep working. Passread_only=Falsefor a writable session. - Capped results.
max_rows(default 1000) andmax_bytes(default 1 MB) bound every payload; truncated results carry atruncatedflag the agent can react to.max_execution_timeadds an engine-side wall-clock limit. - Optional source allowlist. With
file_allowlist=["/data/"], file-like sources may only read under the listed prefixes and DSN-based sources (postgresql(),mysql(),remote(), …) are refused. - Errors go to the model, not the run. Every call returns a JSON envelope —
{"ok": true, "result": …}or{"ok": false, "error": {"code", "type", "message"}}— so a bad query becomes feedback the agent corrects instead of an exception.
Querying remote data
spec = ChDBToolSpec()
spec.run_select_query(
"SELECT status, count() FROM url('https://example.com/logs.ndjson', 'JSONEachRow') GROUP BY status"
)
s3(...), postgresql(...), mysql(...), mongodb(...), remoteSecure(...), iceberg(...), and deltaLake(...) work the same way, subject to the read-only lock and allowlist.
Sharing and lifecycle
To control the engine's lifecycle yourself — or to share one session across several specs — create the engine explicitly and inject it:
from chdb.agents import ChDBTool
from llama_index.tools.chdb import ChDBToolSpec
engine = ChDBTool("analytics_dir", read_only=False)
spec = ChDBToolSpec(engine=engine)
...
engine.close()
spec.close() closes only an engine the spec created itself.
This package is maintained by the chDB team.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llama_index_tools_chdb-0.1.0.tar.gz.
File metadata
- Download URL: llama_index_tools_chdb-0.1.0.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbb6a95b7af53c53e66c28eb0bda44d1feeb0b153f253739216ebcc1ac6da301
|
|
| MD5 |
1ca88ad8b2ec8b9adce70610a5bda222
|
|
| BLAKE2b-256 |
8dc53f65a65dd5a6299ed6e785e4c370427d0a19480afa8632dc9241a8fa89cc
|
File details
Details for the file llama_index_tools_chdb-0.1.0-py3-none-any.whl.
File metadata
- Download URL: llama_index_tools_chdb-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b1863ba684189042380ce83975ca2442693e9e4f572acf738cab467f3468399
|
|
| MD5 |
d5fde27a6d7770367a66a52b1690a5ec
|
|
| BLAKE2b-256 |
3cb4ccbc75ecbd5e4e83a0ff2ee98b1861c479bd1df2257d9da04e8d7127210e
|