Getting Started
Quickstart
Docker Compose quickstart
This guide gets the full Pramiti platform running locally with Docker Compose, including Epistom (semantic intelligence), Praxom (action validation), and a demo retail estate.
Prerequisites
- Docker and Docker Compose v2+
- An LLM API key (Anthropic Claude recommended, or OpenAI/Ollama)
Step 1: Clone and Configure
git clone https://github.com/pramiti-labs/epistom.git
cd epistom
cp .env.example .env.localEdit .env.local and set your LLM API key:
# For Anthropic (recommended)
EPISTOM_LLM_PROVIDER=anthropic
EPISTOM_LLM_MODEL_ID=claude-sonnet-4-5
EPISTOM_ANTHROPIC_API_KEY=your-key-here
# For local development
EPISTOM_AUTH_DISABLED=true
EPISTOM_RATE_LIMIT=0Step 2: Start the Platform
make retail-seed # once: builds demo/retail-estate/seed.sql.gz (not tracked in git)
make up # writes dev secrets to .env, then runs docker compose up -dThis starts all services:
| Service | Port | Purpose |
|---|---|---|
| PostgreSQL | 5435 | Demo retail estate + platform metadata |
| Oxigraph | 7879 | OWL/SPARQL triplestore for the knowledge model |
| API | 8001 | REST API + Praxom endpoints |
| Redis | 6380 | Live attestation feed and shared request stores |
| nginx | 443, 80 | TLS proxy in front of the API and the console |
The demo database is seeded from demo/retail-estate/seed.sql.gz (retail estate schema and data) the first time PostgreSQL starts.
Step 3: Verify Services
# Check all services are healthy
docker compose ps
# Test the API
curl http://localhost:8001/healthStep 4: Ask Your First Question
Use the MCP server or REST API to ask a natural language question:
curl -X POST http://localhost:8001/api/v1/query \
-H "Content-Type: application/json" \
-d '{"question": "What is the total revenue by customer?"}'The platform will:
- Route the question through the NLQ engine
- Look up "revenue" in the knowledge model (defined as
net_amounton paid invoices) - Generate validated SQL using the correct business definition
- Return the answer with a confidence score
Step 5: See an Praxom Verdict
Test the action validation endpoint:
curl -X POST http://localhost:8001/api/v1/praxom/evaluate \
-H "Content-Type: application/json" \
-d '{
"agent_identity": "test-agent",
"verb": "update",
"target_tool": "update_customer",
"payload": {"customer_id": 1, "status": "churned"}
}'Praxom returns a verdict (ALLOW, DENY, REWRITE, or ESCALATE) with a signed attestation record.
Product-Specific Profiles
You can also run individual products:
# Praxom only (PostgreSQL, no Oxigraph, no LLM) — API on port 8012
docker compose --profile praxom up -d
# Epistom only (PostgreSQL + Oxigraph + LLM) — API on port 8011
docker compose --profile epistom up -d
# Flight Recorder standalone (SQLite, no dependencies) — port 8080
docker compose --profile flight-recorder up -d flight-recorderNext Steps
- Installation — All deployment options including Kubernetes
- Core Concepts — Understand the two-plane model and knowledge model
- Epistom — Deep dive into the semantic intelligence engine
- Praxom — Deep dive into the action validation control plane