Skip to content

Quick Start

This guide walks you through your first CRP dispatch in 5 minutes.

1. Create a Client

import crp

# Auto-detect provider from environment variables
client = crp.SDKClient()

# Or specify a model explicitly
client = crp.SDKClient(model="gpt-4o-mini")

CRP checks for OPENAI_API_KEY, ANTHROPIC_API_KEY, or a running Ollama server and selects the appropriate provider automatically.

Legacy client

crp.Client is the legacy CRPOrchestrator. New code should use crp.SDKClient.

2. Ingest Domain Knowledge

client.ingest("""
    Kubernetes uses etcd as its distributed key-value store for all cluster
    state. The API server is the only component that directly interacts with
    etcd. Pod scheduling is handled by kube-scheduler which considers resource
    requirements, affinity rules, taints, and tolerations.
""")

print(f"Facts in warm store: {client.storage.fact_count()}")

CRP's 6-stage extraction pipeline processes the text, identifies entities, extracts structured facts, and stores them in the warm store.

3. Ask a Question

answer = client.ask(
    "Explain Kubernetes pod networking architecture.",
    depth="thorough",          # quick | standard | thorough | exhaustive
)

print(answer.text)
print(f"Quality: {answer.quality}")       # S, A, B, C, or D
print(f"Sources used: {len(answer.sources)}")
print(f"Risk: {answer.crp.risk}")         # LOW, MEDIUM, HIGH, CRITICAL

CRP packs the most relevant facts into a context envelope, dispatches to the LLM, runs the safety control plane, and handles continuation if the output is truncated.

4. Check Session Status

s = client.session()
print(s.id, s.fact_count, s.window_count)
print(s.status())

5. Clean Up

client.close()

Next Steps