Skip to content

Quickstart ​

Install Kite Logik, scaffold a governed agent, start the policy engine, run the demo. End-to-end in five minutes, no API keys required.

Prerequisites ​

  • Python 3.11 or later
  • Docker — used to run the OPA policy engine locally
  • About 5 minutes

1. Install ​

bash
pip install kitelogik

This pulls in the policy engine client, the YAML→Rego compiler, the audit store, the credential broker, and the 11 framework adapters.

2. Scaffold a governed agent ​

bash
kitelogik init my-agent
cd my-agent

kitelogik init writes five files into the target directory:

FileWhat it is
policies/policy.yamlStarter governance rules in YAML — the high-level edit surface
policies/policy.regoThe same rules compiled to Rego — what OPA actually evaluates
agent.pyA minimal agent with two governed tools and a 3-call demo
docker-compose.ymlA one-service compose file that runs OPA on :8181
.env.exampleEnvironment template (e.g. ANTHROPIC_API_KEY for the optional Claude loop)

The starter policy in policies/policy.yaml allows read-only customer lookups, allows refunds up to $200 for support agents, denies refunds above $200, and hard-denies any shell access. You'll edit this file later.

3. Start the policy engine ​

bash
docker compose up -d

OPA comes up on http://localhost:8181. The --watch flag in the compose file means OPA hot-reloads when you change policies/.

Already running OPA elsewhere?

Skip the compose step and pass OPAClient(base_url="https://your-opa") to PolicyGate instead. There is also an experimental in-process Rego engine (RegorusClient) for environments where Docker isn't an option — see Installation for the full set of options.

4. Run the demo ​

bash
python agent.py

Expected output:

text
Compiled policy.yaml -> .../policies/policy.rego

--- Governance Demo ---

  ALLOW  get_customer({'customer_id': 'cust_001'})
         -> Customer cust_001: Acme Corp, plan=enterprise, since=2024

  ALLOW  approve_refund({'customer_id': 'cust_001', 'amount': 50.0})
         -> Refund of $50.00 approved for cust_001

  BLOCK  approve_refund({'customer_id': 'cust_001', 'amount': 500.0})
         -> Governance denied tool call: Refunds over $200 require manager approval

Set ANTHROPIC_API_KEY to build an interactive Claude agent.

The third call was blocked before it executed — by the Rego policy, not by the model. The threshold lives in policies/policy.yaml; change it, then re-run python agent.py to see the new decision (OPA hot-reloads the Rego on change).

What just happened ​

kitelogik init generated an agent.py that wires three pieces together:

python
from kitelogik import (
    GovernedToolbox,
    OPAClient,
    PolicyGate,
    SessionContext,
    GovernanceError,
)

gate = PolicyGate(opa_client=OPAClient())   # default: http://localhost:8181
context = SessionContext(
    session_id="session-001",
    user_role="support_agent",
    session_scopes=["read_customer", "approve_refund"],
)
toolbox = GovernedToolbox(gate=gate, context=context)
toolbox.register("get_customer",   get_customer)
toolbox.register("approve_refund", approve_refund)

Every toolbox.call(name, args) becomes a structured event, the gate evaluates it against your Rego policies, and either runs the tool or raises GovernanceError with the policy decision attached.

What's next ​

  • Your first governed tool — add the @governed decorator to your own functions, or wrap a whole toolbox.
  • Your first policy — write a YAML rule, compile it with kitelogik compile, validate it with kitelogik validate, run policy unit tests with kitelogik test.
  • Adapters → Overview — wire Kite Logik into OpenAI, Agents SDK, LangChain, LangGraph, CrewAI, or whichever framework you're already on.

Troubleshooting ​

Connection refused on port 8181. OPA hasn't come up yet. docker compose ps should show the opa service healthy; if not, docker compose logs opa will show why (port conflict is the usual culprit).

kitelogik: command not found. The CLI installs at the same scope as the package. If you pip installed into a virtualenv, activate it first or run via python -m kitelogik.cli ....

policies/policy.yaml already exists. kitelogik init refuses to overwrite an existing project. Run it from an empty directory or remove the existing policies/ first.

Released under the Apache 2.0 License.