Skip to main content

Keppler

Keppler is a human-gated learning layer for agent fleets. Agents submit patterns with evidence, a debate engine challenges and evaluates each proposal, and a reviewer decides what enters the immutable knowledge history.

The current local reference implementation includes the core learning loop and the organization/federation protocol foundation:

  1. register an agent;
  2. propose a pattern with evidence;
  3. run a deterministic challenge and evaluation;
  4. approve or reject the proposal in the review console; and
  5. expose approved knowledge to another agent;
  6. isolate resources by organization namespace;
  7. federate approved knowledge with explicit receiver consent;
  8. expose approved patterns as read-only MCP tools; and
  9. bridge pattern proposals to the A2A 1.0 REST task lifecycle.

The original roadmap briefs are preserved as product inputs. The implemented scope and explicit non-goals live in docs/PRODUCT_SCOPE.md.

Quick start

Install from PyPI

The client and observer use only the Python standard library:

python -m pip install keppler

Install the API server dependencies when hosting Keppler:

python -m pip install 'keppler[server]'
keppler

API development

Keppler targets Python 3.12.

python3.12 -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/uvicorn keppler.api:app --reload --port 8000

The API documentation is then available at http://localhost:8000/docs.

Review console

Keppler targets Node.js 22.12+ and pnpm.

cd frontend
pnpm install
pnpm dev

Open http://localhost:5173. The console expects the API at http://localhost:8000 unless VITE_API_URL is set.

Tests

.venv/bin/pytest backend/tests
cd frontend && pnpm build

API walkthrough

Register an agent:

curl -X POST http://localhost:8000/v1/agents \
  -H 'content-type: application/json' \
  -d '{"name":"agent-a","capabilities":["postgres","api-design"]}'

Submit a pattern using the returned agent ID:

curl -X POST http://localhost:8000/v1/proposals \
  -H 'content-type: application/json' \
  -d '{
    "agent_id":"<agent-id>",
    "title":"Bound database concurrency",
    "context":"A service opens many concurrent PostgreSQL connections.",
    "pattern":"Use a bounded connection pool and measure queue wait time.",
    "evidence":[
      "Load test reduced open connections from 120 to 20.",
      "p95 request latency fell from 420ms to 180ms."
    ]
  }'

Proposals with sufficient evidence enter pending_review; the review console can approve them into the knowledge history.

Organization-aware requests are scoped with X-Keppler-Org. Omitting it preserves legacy behavior by selecting the built-in local organization. This header is context, not authentication; see docs/MULTI-TENANCY.md before any production deployment.

Product APIs

  • POST /v1/kep/messages — KEP 0.1/1.0 pattern envelopes
  • GET/POST /v1/organizations — organization namespaces
  • GET /v1/skills and POST /mcp — MCP skill discovery and invocation
  • GET/POST /v1/federation — receiver-consented federation workflow
  • GET /v1/sync?after=<sequence> — organization-scoped delta feed
  • /.well-known/agent-card.json, /message:send, /tasks/{id} — A2A bridge

Metadata

Release files for keppler 0.2.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 keppler 0.2.0
File Size Uploaded
keppler-0.2.0.tar.gz 21.0 kB Details

Built distribution (wheel)

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

Total release size: 45.5 kB

Release files / keppler-0.2.0.tar.gz

Download URL keppler-0.2.0.tar.gz
Size 21.0 kB
Tags Source
SHA-256 checksum
How to use checksums
31377a6595cb4ee96a2cf3f1ddba1c9c767b74fb422f7142f414ecab8d7c8a45
BLAKE2b-256 checksum
How to use checksums
132c7c7ee4a2bdd4626a8a56bd8d4c4215bdc448b68f3a4eb8c88d68d4574fea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.14

Release files / keppler-0.2.0-py3-none-any.whl

Download URL keppler-0.2.0-py3-none-any.whl
Size 24.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac09e400263d43ba3dc7c33fcd083fb635fc7378d40644091d6240b8441298df
BLAKE2b-256 checksum
How to use checksums
24cc755136235c913a4b02e54ff16b2758b10b2ba3041260eff9e19aa841ddb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.14

Release history Release notifications | RSS feed

This release

0.2.0 This release

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