Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Deploy overview site to GitHub Pages

# Publishes docs/overview/ (the AgentKitAI suite overview) to GitHub Pages.
# The site is regenerated from gen_site.py first, so the deployed pages can
# never drift from the generator even if someone forgets to re-run it locally.
#
# One-time owner setup: repo Settings → Pages → Source = "GitHub Actions".

on:
push:
branches: [main]
paths:
- 'docs/overview/**'
- '.github/workflows/pages.yml'
workflow_dispatch: {}

permissions:
contents: read
pages: write
id-token: write

# One concurrent deploy; don't cancel an in-flight publish.
concurrency:
group: pages
cancel-in-progress: false

jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4

- name: Regenerate site from gen_site.py
run: python3 docs/overview/gen_site.py

- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: docs/overview

- id: deployment
uses: actions/deploy-pages@v4
28 changes: 28 additions & 0 deletions docs/overview/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# AgentKitAI — suite overview site

A self-contained static site documenting the whole AgentKitAI control plane:
`index.html` (the big picture + architecture diagram) plus one page per product
(AgentLens, AgentGate, Lore, FormBridge, AgentEval, agentkit-guardrails,
agentkit-cli, agentkit-stack). No build step, no dependencies — open
`index.html` in a browser and the inter-page links work straight off the
filesystem.

## Regenerate

The HTML + CSS are **generated** from a single data + template script. Edit the
product data (versions, features, interfaces) in `gen_site.py`, then:

```bash
python gen_site.py # rewrites index.html, <product>.html, styles.css in place
```

Everything (including the inline SVG architecture diagram) is defined in
`gen_site.py` — don't hand-edit the generated `.html` files; they'll be
overwritten on the next run.

## Layout

- `gen_site.py` — source of truth: per-product data, the page template, the SVG diagram, and the CSS
- `index.html` — overview, architecture diagram, product cards
- `<product>.html` — purpose · architecture · key features · interfaces · how it fits · notable engineering · stack
- `styles.css` — shared dark theme
27 changes: 27 additions & 0 deletions docs/overview/agenteval.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>AgentEval — AgentKitAI</title><link rel="stylesheet" href="styles.css">
</head><body>
<header class="masthead"><a class="brand" href="index.html">⬡ <b>AgentKitAI</b></a>
<span class="brand-sub">open-source control plane for AI agents</span></header>
<nav class="topnav"><a href="index.html">Overview</a><a href="agentlens.html">🔍 AgentLens</a><a href="agentgate.html">🛂 AgentGate</a><a href="lore.html">🧠 Lore</a><a href="formbridge.html">📝 FormBridge</a><a href="agenteval.html" class="active">✅ AgentEval</a><a href="agentkit-guardrails.html">🚦 agentkit-guardrails</a><a href="agentkit-cli.html">🔧 agentkit-cli</a><a href="agentkit-stack.html">📦 agentkit-stack</a></nav>
<main>
<a class="back" href="index.html">← All products</a>
<header class="phead tier-core">
<h1><span class="emoji-lg">✅</span> AgentEval</h1>
<p class="tag">Testing &amp; evaluation for AI agents: YAML suites, pluggable graders, statistical regression detection.</p>
<div class="card-meta"><span class="badge ">Core</span><span class="badge ">Testing / evaluation</span><span class="badge lang">Python</span><span class="badge ver">v0.7.0</span><span class="badge status">Active · alpha</span></div>
<div class="links"><a class="lnk" href="https://github.com/agentkitai/agenteval">GitHub ↗</a><a class="lnk" href="https://pypi.org/project/agentevalkit/">PyPI ↗</a></div>
</header>
<section><h2>Purpose</h2><p>Tests the non-deterministic. Enables declarative test-suite definition in YAML, grades agent outputs with 10+ pluggable graders, detects statistical regressions across runs using Welch&#x27;s t-test, and integrates with AgentLens to import production sessions as test cases and emit eval runs as tamper-evident audit evidence.</p></section>
<section><h2>Architecture</h2><p>YAML suite files define cases (inputs, expected outputs, grading criteria). A loader reads them and a runner executes each case against a sync/async agent callable with timeout + retry. Results are graded by one of 10+ pluggable graders producing GradeResult objects; complete EvalRun objects persist to a SQLite ResultStore. A Coordinator can route cases to Redis-backed workers for distributed execution (with local fallback). Emitters send finished runs to AgentLens as hash-chained federation evidence. 20+ CLI commands orchestrate everything.</p></section>
<section><h2>Key features</h2><ul class="features"><li>YAML declarative test suites (inputs, expected outputs, grading criteria)</li><li>10 built-in graders: exact, contains, regex, tool-check, llm-judge, custom, json_schema, semantic, latency, cost, trajectory</li><li>Statistical regression detection via Welch&#x27;s t-test; group comparison command</li><li>AgentLens integration both ways: import sessions as fixtures; emit runs as tamper-evident evidence</li><li>Distributed execution: Redis broker + coordinator, automatic local fallback</li><li>Cost + latency tracking per case, aggregated across suites</li><li>Framework adapters: LangChain, CrewAI, AutoGen</li><li>OpenTelemetry trace import → eval fixtures</li><li>GitHub Action for CI gating (min pass-rate, regression thresholds)</li><li>Badges, trend analysis, flaky-test detection, EU AI Act compliance checks</li></ul></section>
<section><h2>Interfaces</h2><ul class="ifaces"><li>CLI: agenteval run / compare / import-agentlens / ci / baseline / worker / evidence / trends / verify / …</li><li>GitHub Action: agentkitai/agenteval@v1</li><li>Python SDK: EvalCase / EvalSuite / EvalRun / GradeResult, Grader protocol, runner.run_suite()</li><li>SQLite persistence (eval_runs, eval_results)</li><li>AgentLens HTTP: POST /api/internal/eval/run (service-token gated)</li></ul></section>
<section><h2>How it fits the suite</h2><p>The testing/evaluation arm — closes the loop with AgentLens bidirectionally: production sessions become regression fixtures, and eval results flow back into the tamper-evident audit trail. Complements AgentGate and AgentLens for a build → observe → evaluate cycle.</p></section>
<section><h2>Notable engineering</h2><p>Hash-chained, service-token-gated eval evidence emitted to AgentLens (a full test-case ↔ production-session audit trail); Welch&#x27;s t-test for statistically sound regression detection rather than naive pass/fail; lazy-loaded grader registry; pure-Python fallback when scipy is unavailable.</p></section>
<section><h2>Stack</h2><p class="stack">Python 3.9+ · Click · PyYAML · SQLite · httpx · jsonschema · sentence-transformers · scipy · redis</p></section>
<nav class="prevnext"><a href="formbridge.html">← 📝 FormBridge</a><a href="agentkit-guardrails.html">🚦 agentkit-guardrails →</a></nav>
</main>
<footer>AgentKitAI · 8 products · MIT/ISC licensed · github.com/agentkitai</footer>
</body></html>
27 changes: 27 additions & 0 deletions docs/overview/agentgate.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>AgentGate — AgentKitAI</title><link rel="stylesheet" href="styles.css">
</head><body>
<header class="masthead"><a class="brand" href="index.html">⬡ <b>AgentKitAI</b></a>
<span class="brand-sub">open-source control plane for AI agents</span></header>
<nav class="topnav"><a href="index.html">Overview</a><a href="agentlens.html">🔍 AgentLens</a><a href="agentgate.html" class="active">🛂 AgentGate</a><a href="lore.html">🧠 Lore</a><a href="formbridge.html">📝 FormBridge</a><a href="agenteval.html">✅ AgentEval</a><a href="agentkit-guardrails.html">🚦 agentkit-guardrails</a><a href="agentkit-cli.html">🔧 agentkit-cli</a><a href="agentkit-stack.html">📦 agentkit-stack</a></nav>
<main>
<a class="back" href="index.html">← All products</a>
<header class="phead tier-core">
<h1><span class="emoji-lg">🛂</span> AgentGate</h1>
<p class="tag">Human-in-the-loop approval gateway with policy-based auto-approval, auto-denial, and multi-channel notifications.</p>
<div class="card-meta"><span class="badge ">Core</span><span class="badge ">Governance / approval</span><span class="badge lang">TypeScript</span><span class="badge ver">vcore 0.1.0</span><span class="badge status">Active · pre-1.0</span></div>
<div class="links"><a class="lnk" href="https://github.com/agentkitai/agentgate">GitHub ↗</a><a class="lnk" href="https://www.npmjs.com/package/@agentkitai/agentgate-server">npm ↗</a></div>
</header>
<section><h2>Purpose</h2><p>Keeps humans in control of what AI agents can do by intercepting requests and evaluating them against policies that auto-approve safe actions, auto-deny dangerous ones, and route ambiguous requests to human approvers via web dashboard, Slack, Discord, or email. Provides complete audit trails for compliance and tags every decision with an OWASP LLM Top-10 risk classification.</p></section>
<section><h2>Architecture</h2><p>Agents submit approval requests to an authenticated Hono HTTP API. A policy engine evaluates each request against prioritized, scope-gated rules (per-agent, per-tool, or global) using comparison operators and emits one of four decisions. Real-time HMAC-signed webhooks deliver notifications with exponential-backoff retry. Humans decide via React dashboard, Slack DM, or Discord channel — or a one-click decision link. SQLite (dev) / PostgreSQL (prod) stores requests, policies, keys, audit logs; Redis handles sliding-window rate limiting and queues. Background scanners handle overrides, escalation, and webhook retries with graceful shutdown.</p></section>
<section><h2>Key features</h2><ul class="features"><li>Policy engine: rule matching on action/params/context with $lt/$gt/$lte/$gte/$in/$regex operators</li><li>Four decision types: auto_approve, auto_deny, route_to_human, route_to_agent — with per-rule approver + channel</li><li>Multi-channel approvals: React dashboard, Slack DM bot, Discord channel bot, email (SMTP)</li><li>One-click decision links — passwordless approve/deny from the notification itself</li><li>OWASP LLM Top-10 risk classification on every decision (compliance evidence)</li><li>Full audit trail with actor namespaces (dashboard:/slack:/discord:/mcp:/policy:/api:/system)</li><li>Agent identity verification via token signing (SPIFFE support)</li><li>Per-agent budget / spend limits with alerts</li><li>Override system for per-agent escalation gates (require_approval / deny)</li><li>HMAC-SHA256 signed webhooks with event filtering + exponential-backoff retry</li><li>API keys with fine-grained scopes + per-key sliding-window rate limiting</li><li>Hardened: SSRF protection, ReDoS defense (safe-regex2), CORS, security headers, graceful shutdown</li></ul></section>
<section><h2>Interfaces</h2><ul class="ifaces"><li>HTTP REST API (POST /api/requests, /api/requests/:id/decide, /api/overrides, …)</li><li>10 MCP tools: agentgate_request/get/list/decide, policy CRUD, audit queries</li><li>CLI: agentgate config / request / status / list / approve / deny / override</li><li>TypeScript SDK: AgentGateClient</li><li>React web dashboard (requests, policies, keys, webhooks, audit search)</li><li>Slack bot · Discord bot · outbound webhooks</li></ul></section>
<section><h2>How it fits the suite</h2><p>The governance and approval layer of the control plane. Logs every decision to AgentLens; receives reactive policy overrides from agentkit-guardrails when AgentLens metrics breach; consumes the shared @agentkitai/auth library. Drives human approvals through Slack/Discord for teams.</p></section>
<section><h2>Notable engineering</h2><p>Operator-based policy matching with scope gating, passwordless decision-token links, per-agent budget enforcement, and an OWASP-LLM risk tag on every decision — designed so the approval record is itself compliance evidence. Docker secrets via the _FILE env convention.</p></section>
<section><h2>Stack</h2><p class="stack">TypeScript 5.7 · Hono · Drizzle ORM · SQLite/PostgreSQL · Redis · React + Tailwind · @slack/bolt · discord.js · jose (JWT) · Vitest</p></section>
<nav class="prevnext"><a href="agentlens.html">← 🔍 AgentLens</a><a href="lore.html">🧠 Lore →</a></nav>
</main>
<footer>AgentKitAI · 8 products · MIT/ISC licensed · github.com/agentkitai</footer>
</body></html>
27 changes: 27 additions & 0 deletions docs/overview/agentkit-cli.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!doctype html>
<html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>agentkit-cli — AgentKitAI</title><link rel="stylesheet" href="styles.css">
</head><body>
<header class="masthead"><a class="brand" href="index.html">⬡ <b>AgentKitAI</b></a>
<span class="brand-sub">open-source control plane for AI agents</span></header>
<nav class="topnav"><a href="index.html">Overview</a><a href="agentlens.html">🔍 AgentLens</a><a href="agentgate.html">🛂 AgentGate</a><a href="lore.html">🧠 Lore</a><a href="formbridge.html">📝 FormBridge</a><a href="agenteval.html">✅ AgentEval</a><a href="agentkit-guardrails.html">🚦 agentkit-guardrails</a><a href="agentkit-cli.html" class="active">🔧 agentkit-cli</a><a href="agentkit-stack.html">📦 agentkit-stack</a></nav>
<main>
<a class="back" href="index.html">← All products</a>
<header class="phead tier-support">
<h1><span class="emoji-lg">🔧</span> agentkit-cli</h1>
<p class="tag">Unified CLI to orchestrate the suite, with Ed25519 agent identity and audit-verified governance.</p>
<div class="card-meta"><span class="badge ">Tooling</span><span class="badge ">Orchestrator + identity</span><span class="badge lang">TypeScript</span><span class="badge ver">v0.1.1</span><span class="badge status">Active</span></div>
<div class="links"><a class="lnk" href="https://github.com/agentkitai/agentkit-cli">GitHub ↗</a><a class="lnk" href="https://www.npmjs.com/package/@agentkitai/agentkit-cli">npm ↗</a></div>
</header>
<section><h2>Purpose</h2><p>A single command-line interface to initialize, deploy, monitor, and manage the suite of agent microservices running in Docker — plus agent identity management, audit hash-chain verification, compliance evidence export, and governance profiles that enforce secure, auditable operations across the stack.</p></section>
<section><h2>Architecture</h2><p>Three layers: (1) a Commander-based command layer (init/status/up/down/logs/doctor/identity/audit/evidence/demo/mcp/serve) that reads config and orchestrates Docker or service APIs; (2) an MCP layer with a stdio server exposing CLI verbs as tools and an HTTP server bound to a specific agent identity for stack-scoped queries; (3) a support layer with config auto-discovery (walks up 10 dirs for agentkit.config.yaml), a service registry with health checks, project generators, and identity storage. Identity ops are appended to an audit.log for tamper-evidence.</p></section>
<section><h2>Key features</h2><ul class="features"><li>init — interactive/non-interactive scaffolding; default or governed-agent (compliance-first) template</li><li>up / down / logs — thin Docker Compose wrappers, governance-profile default, fresh secret generation</li><li>status — service health monitoring with --watch live mode</li><li>doctor — diagnostics (config, Docker daemon, container health, connectivity)</li><li>identity mint/inspect/rotate — Ed25519 agent identity lifecycle in ~/.agentkit</li><li>audit verify — independent client-side hash-chain re-walk of a running stack</li><li>evidence export — signed compliance evidence pack</li><li>demo — first-run seed data + guided tour</li><li>mcp (stdio) — CLI verbs as MCP tools</li><li>serve (HTTP) — identity-scoped MCP server; every result stamped with servedBy {id, fingerprint}</li></ul></section>
<section><h2>Interfaces</h2><ul class="ifaces"><li>CLI: agentkit init|status|up|down|logs|doctor|identity|audit|evidence|demo|mcp|serve</li><li>MCP (stdio): status, doctor, audit_verify, identity_mint/inspect/rotate, init</li><li>MCP (HTTP /mcp): identity_whoami, status, audit_verify, evidence_export</li><li>Config: agentkit.config.yaml (projectName, language, template, services.*)</li><li>Identity store: ~/.agentkit/identities/*.json + *.key (0600) + audit.log (JSONL)</li><li>Published: npm @agentkitai/agentkit-cli</li></ul></section>
<section><h2>How it fits the suite</h2><p>The central orchestrator — manages the lifecycle of all five core services and mints the Ed25519 identities used across them. Exposes stack operations to LLM agents via MCP so an agent can operate the control plane itself; governance-by-default cascades audit verification and evidence export through the whole stack.</p></section>
<section><h2>Notable engineering</h2><p>Identity-scoped security: every MCP result is stamped with servedBy {id, fingerprint}. Ed25519 keys stored 0600 outside repos, never printed. audit verify does an independent client-side cross-check of prevHash linkage — integrity beyond the server&#x27;s own verdict. up/down/logs are deliberately thin Compose wrappers (no re-implementation).</p></section>
<section><h2>Stack</h2><p class="stack">TypeScript (CommonJS) · Commander.js · Zod · YAML · @modelcontextprotocol/sdk · Node crypto (ed25519) · Docker Compose</p></section>
<nav class="prevnext"><a href="agentkit-guardrails.html">← 🚦 agentkit-guardrails</a><a href="agentkit-stack.html">📦 agentkit-stack →</a></nav>
</main>
<footer>AgentKitAI · 8 products · MIT/ISC licensed · github.com/agentkitai</footer>
</body></html>
Loading
Loading