Start Here
Kheish is easiest to understand when you treat the daemon as the center of the system. The daemon owns durable state, runs, approvals, tasks, assets, routing, and ingress. Everything else talks to it. This repository contains the daemon and its docs. The SDK, connectors, and capture runtime are separate packages or sibling repositories around that daemon.What runs where
kheish-daemonruns the control plane, session journal, run execution, approvals, tasks, assets, channels, projects, observations, and routing.kheish-daemonalso includes built-in connector support for daemon-managed ingress such as HTTP, Slack, and Telegram.kheish-sdkis the thin client layer for application code. It speaks to the daemon over the control-plane API.kheish-connectorsis the sidecar companion for external connectors. Use it when you want connector logic that lives outside the daemon binary.kheish-captureis the host-local capture runtime. It pushes observations into daemon-owned observation sources so they can be listed or materialized later.
Choose your first path
If you are new to Kheish, use this order:- Run Kheish to get one working daemon, one session, and one completed run.
- Then choose the next lane that matches your goal:
- Running the daemon, Docker and containers, and Security and auth if you are operating a real instance
- Use Kheish from Python if you are integrating from application code
- Send one webhook event into Kheish if you want the first external ingress path
- Capture one observation later, when you want host-local observation ingestion
Before you start
- Work from a fresh daemon when you want deterministic validation. Reusing stale state roots is a common source of confusion.
- Keep one provider credential available in your shell before the first run. The examples below use OpenAI plus
gpt-5.4. - Prefer one fresh session per quickstart lane so you can tell which run belongs to which example.
- Treat the daemon CLI and HTTP API as ground truth. The daemon owns the state model; the surrounding repos are clients and producers.
.env, load them before the daemon quickstart:
What each quickstart proves
- Run Kheish proves the runtime is up, can accept input, and can complete a real model-backed run.
- Use Kheish from Python proves application code can create runs against the same daemon.
- Send one webhook event into Kheish proves external ingress can materialize work into a durable session.
- Capture one observation proves host-local capture can provision a daemon observation source and upload media into it.
Minimal first-run CLI surface
For the very first daemon success, you only need:serveruntime getsessions createsessions input --wait
approvals listtasks listruns get
When to leave the quickstarts
After the first successful run, read:- Overview for the product model
- Sessions and runs for the daemon execution model
- Approvals and questions for blocked and resumable workflows
- Providers and routing for route selection and credentials
- Running the daemon and Security and auth before exposing the control plane beyond localhost
