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.