BLA
BLA (Blind LLM Agents) is the open-source Blue Defense MCP and CLI built to protect software artifacts against automated AI reverse-engineering workflows.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Governed AI agents as a Kubernetes sidecar: policy-as-code charters, mTLS/SPIFFE identity, budgets, guardrails and JSONL audit for LLM agents. Any language, no SDK.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Governed AI agents that run as a sidecar next to your service. The agent is a sidecar of the service, not a service of its own.
agent-sidecar brings AgentSecOps to LLM agents: identity, policy, budgets, guardrails and audit, owned by the platform instead of by each app. Agents run on Claude, or on a built-in mock model for offline tests.
Naming. agentsc is the short name of agent-sidecar, used in all code: the sidecar is agentscd, the CLI is agentsc, the CA is embassy, the runtime is agentsc-runtime, charters use apiVersion: agentsc.io/v1alpha1, and identities look like spiffe://agentsc/ns/<ns>/svc/<svc>.
127.0.0.1:3500 or gRPC on 127.0.0.1:50001.spiffe://agentsc/ns/<ns>/svc/<svc>. The called sidecar decides which peers and which of their agents may call.audit.sink: file). Read them with kubectl logs or agentsc logs.flowchart LR
subgraph podA["pod: orders"]
A["app (any language)"] -->|"HTTP or gRPC on localhost"| S["sidecar (agentscd)"]
S ---|"gRPC and the model gateway, on unix sockets"| R["runtime (agentsc-runtime)"]
end
S -->|"model API (the sidecar holds the key)"| C["Claude"]
subgraph podB["pod: inventory"]
P["peer sidecar"] --> B["peer app"]
end
S -->|"mTLS, port 50002"| P
You need Rust (cargo), protoc, uv, Go, python3 and curl. No Kubernetes and no API key.
git clone https://github.com/f8fvwgzc/agent-sidecar.git && cd agent-sidecar
make local-demo
The script starts two example apps (Go orders, FastAPI inventory), each with its own sidecar and real mTLS certificates.
It makes three calls (allowed across services, denied admin call, blocked by a guardrail) and prints the audit trail.
Without ANTHROPIC_API_KEY the demo runs on a mock model (it sets AGENTSC_MOCK_FALLBACK=1; elsewhere a missing key refuses Claude agents). Export the key first to use Claude.
The full v0.2 platform (control plane, console, managed sidecars) runs without Docker with CHECK_ONLY=0 make platform-demo; the console is then at http://localhost:38088.
With Docker, make compose-up runs the same stack plus an OpenTelemetry collector and Jaeger (set AGENTSC_CONSOLE_PORT, AGENTSC_ORDERS_PORT or AGENTSC_JAEGER_PORT if 8080, 8081 or 16686 are taken).
On minikube (also needs Docker, minikube and kubectl), run make minikube-up build deploy demo.
Your app sends one HTTP request to its own sidecar:
curl -s localhost:3500/v1/agents/stock-analyst/invoke \
-H 'content-type: application/json' \
-d '{"input": "How many WIDGET-1 are in stock?"}'
The JSON response has status, output, usage, steps, request_id and trace_id.
An agent that needs a decision from you answers with status: ok and a questions list; you answer in the context of your next call.
A denied invocation returns 403. A budget limit (calls per minute, cost per day, or agent-call depth) returns 429. An unknown agent returns 404.
A runtime or model error returns 502. Hitting max_steps or max_tokens_per_call also returns 502, with status: error.
A tool call that is denied inside the run does not fail the request. It appears in steps with decision: deny.
apiVersion: agentsc.io/v1alpha1
kind: Charter
service: { name: inventory, namespace: shop, app_port: 8000 }
agents:
- name: stock-analyst
type: agent
model: claude-opus-5-5 # or "mock"
system: You answer questions about stock levels.
tools:
- name: get_stock
description: Get stock for one SKU.
type: service
service: inventory # its own app
method: GET
path: /stock/{sku}
budgets: { max_tokens_per_call: 1024, max_calls_per_minute: 60, max_cost_usd_per_day: 2.0, max_steps: 4 }
guardrails: { pii_redact: true }
authz:
default: deny
callers: [{ identity: local, agents: ["*"] }]
services: [{ name: self-stock, identity: local, agent: stock-analyst, service: inventory, allow: ["GET /stock/*"] }]
audit: { sink: stdout }
Check a charter with cargo run -p agentsc-cli -- charter validate <file>.
| Page | What it covers |
|---|---|
| Architecture | How it works: components, ports, request flow, identity, authz order. |
| Getting started | Run it on your machine and on minikube, step by step. |
| Creating agents | Write a charter, define agents and tools, call them from your app. |
| Microservices | Adopt it across many services, for a startup or an enterprise. |
| Monolith and monorepo | One service with many agents, and a monorepo layout. |
| Operations | Audit logs, the CLI, troubleshooting, production checklist, limitations. |
| LLM connection | The platform's LLM_* contract, and the standalone model gateway (agentsc-gateway): wire formats, tenants, own keys, budgets. |
| Decision records | Why HTTP/3 for the console, the response caches, the SQLite store and the default-on agent practices are built the way they are. |
| CONTRACT.md | Full reference: wire protocol, charter, authz order, audit record. |
This is a v1alpha1 MVP. It is not production-ready. The most important limits:
agentsc.io/inject: "true", and each pod gets its own certificate from embassy (24 hours by default, renewed without a restart). The kustomize demo in deploy/ writes the agentscd container into each Deployment by hand and uses per-service certificates from a bootstrap Job, with no rotation and one CA per namespace.pii_redact only rewrites the agent's final output and the audit records. It does not change prompts sent to the model.service.name and the ports.More detail is in docs/operations.md and CONTRACT.md §11.
See CONTRIBUTING.md to build, test and send a change. Report security problems privately, as SECURITY.md explains.