Skip to main content

kiari

kiari is a CLI tool for developing and experimenting with qualia-oriented LLM agents.

Installation

pip install kiari

Usage

Start the interactive console:

kiari

kiari stores its configuration, persistent data, and cache under ~/.kiari/config, ~/.kiari/data, and ~/.kiari/cache, respectively.

Run a one-shot batch prompt:

kiari "hello"

Manage profiles:

kiari profile list
kiari profile new
kiari profile use

Generate an image with the built-in image_generate tool:

kiari -t image_generate "Generate an illustration of a cat reading a book"

Generate a video with the built-in video_predict tool:

kiari -t video_predict "Generate a short video of a cat playing with a ball"

Search the web with the built-in web tool:

kiari -t web "Search the web for the latest Python release"

Operate connected Chrome profiles with the built-in chrome tool:

kiari -t chrome "List Chrome tabs, select example.com, and summarize its current page"

The Chrome tool requires Chrome Bridge 0.4.x. Install and connect its Chrome extension; the SDK reuses or starts the loopback server automatically. Each tool action acquires and releases its own exclusive Chrome Bridge session.

To run the real SDK/extension integration test, connect Chrome Bridge and run:

make chrome_test

The test opens and closes only its own loopback fixture tab. It is marked costly and is skipped by the normal test suite.

See Chrome Tool and Chrome Bridge for session, target/ref, error, ownership, and SDK update semantics.

FastAPI Mode

Start an automatically reloading development server:

kiari fastapi --chat-model openai

Run multiple production-style workers without reload:

kiari fastapi --fastapi-workers 4 --fastapi-path /agent

The service exposes GET /health and streams agent events as NDJSON from POST / (or the configured path):

curl -N http://localhost:8000/ \
  -H 'Content-Type: application/json' \
  -d '{"text":"hello"}'

Authentication defaults to none. Configure Bearer authentication before exposing the server to an untrusted network, for example with --fastapi-authenticator 'bearer?api_key=secret' or the corresponding component config. Request files are resolved by the server; they are not uploaded by this API.

Streamlit Mode

Start the browser chat UI:

kiari streamlit --chat-model openai --history-repository local

The default browser-session authenticator isolates data for the lifetime of one browser session. For durable multi-user identity, configure Streamlit OIDC in .streamlit/secrets.toml and start with --streamlit-authenticator oidc (or oidc?provider=google for a named provider). Secrets stay in Streamlit configuration and are not copied into kiari profiles or startup payloads.

Each user creates and selects globally unique agent IDs in the sidebar. Agent IDs accept letters, digits, ., _, and -. Deleting an agent removes its registered identity and History; generated files and caches are retained.

The sidebar can apply per-session YAML overrides for agent, tool, workflow, prompt, chat, and speech options. Runtime-wide settings such as profiles, plugins, repositories, authentication, loggers, and server options remain fixed at startup.

Watch Mode

Watch file changes:

kiari watch "file?paths=.&include_patterns=*.md"

Watch Pub/Sub:

kiari ext pubsub create-topic --project-id kiarina --topic-id tmp
kiari ext pubsub create-subscription --project-id kiarina --topic-id tmp --subscription-id tmp
kiari watch "pubsub?project_id=kiarina&subscription_id=tmp"
kiari ext pubsub publish-message --project-id kiarina --topic-id tmp --attribute hoge=fuga "hello"

Watch Realtime Database:

DATABASE_URL=https://kiarina-python.firebaseio.com/
kiari watch "rtdb?database_url=$DATABASE_URL&path=/posts/kiarina"
kiari ext rtdb set --database-url $DATABASE_URL --path /posts/kiarina '{"message":"hello"}'
kiari ext rtdb get --database-url $DATABASE_URL --path /posts/kiarina
kiari ext rtdb watch --database-url $DATABASE_URL --path /posts/kiarina

Watch Slack:

CHANNEL_ID=C077QKNDCUR
kiari watch "slack?"
kiari watch --watch-handler slack "slack?"
kiari ext slack post-message --channel $CHANNEL_ID "hello"
kiari ext -v slack get-channel-messages --channel $CHANNEL_ID --limit 1
kiari ext slack watch-channel --channel $CHANNEL_ID

Development

mise run setup
mise run ci

Using the working tree as the global kiari

Install the checkout as a uv tool so that kiari on PATH runs the working tree while its dependencies stay isolated from the development .venv:

uv tool install --editable .

Source edits take effect immediately. After adding a dependency to pyproject.toml, refresh the tool environment:

uv tool upgrade kiari

A plugin that needs an extra package must declare it with --with. The tool environment is owned declaratively by uv-receipt.toml, so packages installed into it by hand are removed on the next upgrade. Every --with has to be repeated on each reinstall:

uv tool install --editable . --with <package> --force

Reinstalling without --with rebuilds the environment from pyproject.toml alone:

uv tool install --editable . --force

The tool environment resolves its own dependencies and does not read uv.lock, so its versions can drift from the development environment. Run uv tool upgrade kiari after make upgrade to keep them aligned.

Remove the command with:

uv tool uninstall kiari

Metadata

Release files for kiari 0.3.0

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

Source distribution (sdist)

Source distribution for kiari 0.3.0
File Size Uploaded
kiari-0.3.0.tar.gz 218.9 kB Details

Built distribution (wheel)

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

Total release size: 577.4 kB

Release files / kiari-0.3.0.tar.gz

Download URL kiari-0.3.0.tar.gz
Size 218.9 kB
Tags Source
SHA-256 checksum
How to use checksums
846e6b10e8a256a9d2ecc9c443e1dddf01d74eb59cdb7c3a825b8b2b8a63ac51
BLAKE2b-256 checksum
How to use checksums
0f17ecbbe3e872762e23bd5ac865ae565ee21748cfa7c5a0701b2b99ea6ee2bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 20, 2026.

Transparency log

Release files / kiari-0.3.0-py3-none-any.whl

Download URL kiari-0.3.0-py3-none-any.whl
Size 358.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d699311c8672462cf01982930ff03f1513baa3b28eb2d89df8fe6c0487bf843d
BLAKE2b-256 checksum
How to use checksums
4179e041beeca39d6e4622372d104050d0f33b220c78f8b14fe24d5884813262
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

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