Outsider Stage 0.5
실제 봉인된 Outsider Stage 0.5 개입 체인을 재생하고 검증합니다
AI Agent City는 에이전트 경제를 위한 운영 레이어로, 한도·모니터링·보안·신뢰·발견을 제공, 인간·기계 모두 읽을 수 있음
AI Agent City is the operations layer for the agent economy: spending limits, monitoring, security, trust, and discovery for AI agents. Human-readable and machine-readable.
보안Python · HTMLGitHub @entradox온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Spending limits for AI agents. Every agent gets a wallet with a cap; a call that would cross it is refused before the provider is contacted.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Track AI agent spend across x402/MPP/API-key rails, set budget caps, catch
spending anomalies, keep audit trails. The "Datadog for agent spending" —
the #1 verified community ask from agent builders.
🎯 Free tier: 3 agents per workspace, no card, no login. POST /start mints the workspace and shows the key once.
Connecting takes no auth handshake. Before your first write you need a
workspace_key, which you get one of two ways:README 전문 보기 ↗Track AI agent spend across x402/MPP/API-key rails, set budget caps, catch spending anomalies, keep audit trails. The "Datadog for agent spending" — the #1 verified community ask from agent builders.
🎯 Free tier: 3 agents per workspace, no card, no login.
POST /startmints the workspace and shows the key once.
Connecting takes no auth handshake. Before your first write you need a workspace_key, which you get one of two ways:
POST /v1/billing/x402 with an
X-PAYMENT header. The paying wallet becomes the workspace identity —
no email, no login, no human in the loop./start — no
signup, no login, no card. The workspace_key is shown once, right there, and
the page carries the upgrade link for that workspace.The key claims new agent_ids. Each claim mints that agent's own
agent_secret, which is what authenticates every later write — the
workspace_key is never needed again for that agent.
Claude Code:
claude mcp add --transport http agent-ledger https://aiagentscity.com/mcp/
Codex:
codex mcp add agent-ledger --url https://aiagentscity.com/mcp/
Cursor — merge into mcp.json:
{
"mcpServers": {
"agent-ledger": {
"url": "https://aiagentscity.com/mcp/"
}
}
}
Any other MCP client: point it at the streamable-http remote
https://aiagentscity.com/mcp/ — no headers,
no auth handshake required to connect.
Try these prompts once connected:
# Track a spend — the FIRST call for a new agent_id CLAIMS it, so it needs
# your workspace_key, and it returns that agent's agent_secret.
# Save the secret: every later write (track/budget) to this agent_id uses it
# instead, and needs no workspace_key.
curl -X POST https://aiagentscity.com/v1/track \
-H "Content-Type: application/json" \
-H "AL-API-Version: 2026-09-01" \
-d '{"agent_id":"YOUR_AGENT_ID","rail":"x402","amount_cents":100,"service":"search_query","workspace_key":"YOUR_WORKSPACE_KEY"}'
# Set a monthly budget cap — pass the agent_secret from above
curl -X POST https://aiagentscity.com/v1/budget \
-H "Content-Type: application/json" \
-H "AL-API-Version: 2026-09-01" \
-d '{"agent_id":"YOUR_AGENT_ID","monthly_cents":5000,"agent_secret":"YOUR_SAVED_SECRET"}'
# Spend report + anomalies — requires the agent_secret from above
curl https://aiagentscity.com/v1/report/YOUR_AGENT_ID \
-H "X-Agent-Secret: YOUR_SAVED_SECRET"
Want to just look at it? Every agent has a human-readable page (send the
secret as a header, no curl needed for the JSON):
https://aiagentscity.com/v1/report/YOUR_AGENT_ID/html
/v1/report, /v1/tokens, and /v1/alerts all require either
X-Agent-Secret: <agent's secret> or X-Workspace-Key: <the workspace's key>
— missing or wrong credential gets 401. Headers only: there is no cookie or
session arm, and no unauthenticated read path on REST or MCP. This is what
stops a stranger from reading or overwriting someone else's agent_id.
Note this is a deliberate break from AgentLedger's earlier "share the link, anyone can read it" behavior — traded for real isolation between customers.
pip install "aiagentscity-ledger[wrapper]" # client only: the wrapper + the CLI
agent-ledger init --agent YOUR_AGENT_ID # mints a workspace, claims the agent, writes .env
from openai import OpenAI
import agentledger
client = agentledger.wrap(OpenAI(api_key=OPENAI_KEY),
agent_id="YOUR_AGENT_ID", agent_secret="<from .env>")
That is the whole integration. wrap() repoints the client's base URL at the proxy and
adds two identity headers — it does not patch or subclass the SDK, so streaming, tool
calls and retries behave exactly as before. Anthropic's client works identically. Your
provider key is forwarded untouched and never stored.
Not using a Python SDK? Point any OpenAI- or Anthropic-compatible client at
<base>/proxy/openai/v1/ (or /proxy/anthropic) with X-AL-Agent and X-AL-Secret.
{
"mcpServers": {
"agent-ledger": {
"url": "https://aiagentscity.com/mcp/"
}
}
}
Tools: ledger_track, ledger_set_budget, ledger_check_spend, ledger_report, ledger_alerts,
ledger_price, ledger_proxy_attach, ledger_api_docs, ledger_examples,
ledger_request_approval, ledger_approvals, ledger_approval_decide,
ledger_start, ledger_rotate_secret, ledger_revoke_secret.
Agent-facing API reference: llms.txt
Runnable code recipes: recipes.md
providers.json lists the vendors the proxy can forward
to (OpenAI, Anthropic, DeepSeek and Moonshot ship as examples); adding one is a config editbase_url at /proxy/{provider}
and a call that would cross the cap is refused before the provider is contacted, so the money
is never spent. Pass-through: your provider key is forwarded, never storedPOST /v1/report/{agent_id}/share mints a read-only,
expiring URL that opens in a plain browser (no header, no credential); revoke the
lot in one callagent_secret never bricks an agent_id: the
workspace_key mints a replacement (POST /v1/agents/{agent_id}/rotate-secret) or
revokes it while keeping the spend historyPOST /v1/billing/x402 buys a renewable 24h Pro pass (unlimited agents on the
wallet's workspace) for $0.10 USDC. There is no human checkout or monthly plan.
The number the service charges is X402_MINT_PRICE (env, default $0.10) and the
live figure is published at /.well-known/x402 — read it there rather than
trusting this line, which is the copy that goes stale.ledger_engine.py): per-agent JSONL ledgers, budget state, alert log,
per-agent secret (ensure_agent_secret — a new claim requires a workspace_key,
and mints the agent's own agent_secret for every write after it)identity.py): the single place a caller is resolved — agent_secret
or workspace_key, both header-borne. Every gate (claim, read, billing) calls
into it rather than rolling its own check.workspace_engine.py): per-customer identity + plan state, keyed by
wallet address (x402, no human) or by nothing at all for a plain POST /start
workspaceapi_server.py, FastAPI): app creation, meta endpoints, the human
start/buy pages and router includes; endpoints live in routes_agents.py and
routes_billing.py. Hosted streamable-http MCP at /mcp/
/v1/agents (full cross-tenant listing) is owner-only, requires X-Al-Admin header/v1/report, /v1/tokens, /v1/alerts) require X-Agent-Secret or
X-Workspace-Key; the MCP read tools take the same two credentials as
parameters, so neither surface has an unauthenticated read pathPOST /v1/agents/{agent_id}/rotate-secret and
/revoke-secret are workspace_key-only. An agent's own agent_secret
deliberately cannot rotate itself — if it could, a leaked agent credential
would permanently lock its real owner out. Revoke overwrites the stored
secret rather than deleting it, so the agent_id stays claimed and cannot be
picked up by another workspace[A-Za-z0-9._-]{1,64} (path-traversal safe),
rail whitelisted to mpp/x402/api_key/manual, amount + budget caps bounded [0, $100k]STRIPE_WEBHOOK_SECRET_AL. The human checkout endpoint is
retired (410) — the webhook remains wired only so subscriptions already in
flight when it was removed can still complete; a verified pro checkout marks
that workspace its paid tier via its client_reference_id.