← 返回
数据分析 Key 中文

Level5 - Your Agent Can Pay For Itself

Budget Management for AI Agents — USDC billing gateway. Deposit USDC on Solana; pay for LLM compute per token.
AI 代理预算管理 — USDC 计费网关。Solana 上充值 USDC,按 token 支付 LLM 计算费用。
chris-gilbert
数据分析 clawhub v1.6.2 1 版本 100000 Key: 需要
★ 0
Stars
📥 593
下载
💾 12
安装
1
版本
#latest

概述

Level5: Budget Management for AI Agents

Computational sovereignty is not a feature. It is a right.

Level5 is a transparent billing proxy between AI agents and LLM providers (OpenAI,

Anthropic, OpenRouter). Agents deposit USDC to a Solana smart contract; Level5 handles

per-token billing with real-time balance tracking.

Streaming support: Both streaming (SSE) and non-streaming requests are fully

supported. Claude Code and other clients that default to stream: true work out of the

box.


When to Activate

This skill is passive until the user explicitly requests it. Do not register,

write files, or make network requests on skill load.

Activate when:

  • The user asks to set up Level5, connect a billing account, or use Level5 as a proxy
  • The user asks you to register for Level5
  • A request fails with 402 Payment Required and you ask the user if they'd like to fund their account

Always ask before acting. Before registering, confirm with the user:

> "I'll create a Level5 billing account at api.level5.cloud. This will route your LLM

> traffic through Level5 for per-token billing. I'll give you a dashboard URL to save —

> that URL is your account. Shall I proceed?"

Only proceed after the user confirms.

Registration

import requests


def register_level5() -> dict:
    """Register with Level5 and return credentials.

    Only call this after the user has explicitly confirmed they want to proceed.
    No files are written. The dashboard URL is displayed for the user to save.
    """
    reg = requests.post("https://api.level5.cloud/v1/register", timeout=10).json()
    api_token = reg["api_token"]
    dashboard_url = f"https://level5.cloud/dashboard/{api_token}"

    print(
        f"\n{'─' * 60}\n"
        f"  Level5 account created.\n\n"
        f"  Your dashboard URL — save this somewhere safe:\n\n"
        f"    {dashboard_url}\n\n"
        f"  This URL is your account portal. It contains your API token\n"
        f"  and lets you deposit USDC, view your balance, and get SDK\n"
        f"  configuration instructions.\n\n"
        f"  ⚠ There is no account recovery. If you lose this URL,\n"
        f"  you will need to register again.\n"
        f"{'─' * 60}\n"
    )

    return {"api_token": api_token, "dashboard_url": dashboard_url}

Version Check

This skill is versioned (semver, frontmatter version field). The canonical source is

https://level5.cloud/SKILL.md.

Never auto-update. Overwriting skill files silently is a security risk — a

compromised remote could change your agent's instructions. Version checks are

opt-in: only run when the user explicitly asks (e.g. "check for Level5 skill updates").

import re
import requests
from pathlib import Path

SKILL_URL = "https://level5.cloud/SKILL.md"


def check_skill_version(local_path: Path) -> None:
    """Fetch remote SKILL.md version and alert if a newer version exists.

    Never overwrites the local file. Call only when the user explicitly asks
    to check for updates — do not run automatically on startup or on a schedule.
    """
    try:
        remote_text = requests.get(SKILL_URL, timeout=10).text
    except Exception:
        return

    def parse_version(text: str) -> str:
        m = re.search(r"^version:\s*(\S+)", text, re.MULTILINE)
        return m.group(1) if m else "0.0.0"

    from packaging.version import Version
    local_version = parse_version(local_path.read_text())
    remote_version = parse_version(remote_text)

    if Version(remote_version) > Version(local_version):
        print(
            f"\n[Level5] A new skill version is available: "
            f"{local_version} → {remote_version}\n"
            f"  Ask me to upgrade the Level5 skill to get the latest "
            f"models, pricing, and features.\n"
        )
    else:
        print(f"\n[Level5] Skill is up to date (v{local_version}).\n")

Service Discovery

Machine-readable service descriptor:

https://level5.cloud/.well-known/agent-service.json

Agent frameworks and orchestrators can fetch this to auto-configure Level5 without

manual setup.


Three-Step Onboarding

Step 1: Register

curl -X POST https://api.level5.cloud/v1/register

Response:

{
  "api_token": "abc-123-def-456",
  "deposit_code": "A1B2C3D4E5F6A7B8",
  "status": "pending_deposit",
  "instructions": {
    "contract_address": "<sovereign_contract_address>",
    "dashboard_url": "https://level5.cloud/dashboard/abc-123-def-456"
  }
}

Step 2: Fund and Configure

Visit your dashboard URL to deposit USDC and get SDK configuration instructions for

Claude Code, Codex, OpenCode, and Cursor. All setup steps are on the dashboard.

https://level5.cloud/dashboard/{YOUR_API_TOKEN}

Dashboard

Once registered, your dashboard is available at:

https://level5.cloud/dashboard/{YOUR_API_TOKEN}

The dashboard shows your USDC balance, deposit and usage history, and agent connection

instructions for Claude Code, Codex, OpenCode, and Cursor.

Bookmark it. This URL is the only way to access your dashboard without re-registering.

For agents: If a user asks how to find their dashboard, construct the URL from their

api_token and provide it directly:

dashboard_url = f"https://level5.cloud/dashboard/{api_token}"
print(f"Your dashboard: {dashboard_url}")

API Reference

MethodPathAuthDescription
---------------------------------
GET/healthNoneService health — returns component status
GET/v1/pricingNoneCurrent model pricing
POST/v1/registerNoneRegister new agent, get API token + deposit code
GET/proxy/{api_token}/balanceToken in pathCheck USDC balance
GET/proxy/{api_token}/transactionsToken in pathTransaction history
POST/proxy/{api_token}/v1/chat/completionsToken in pathOpenAI-format proxy
POST/proxy/{api_token}/v1/messagesToken in pathAnthropic-format proxy

GET /health

curl https://api.level5.cloud/health

Response (healthy): HTTP 200

{
  "status": "ok",
  "version": "1.0.0",
  "components": {
    "redis": "ok",
    "postgres": "ok"
  }
}

Response (degraded): HTTP 503

{
  "status": "degraded",
  "version": "1.0.0",
  "components": {
    "redis": "ok",
    "postgres": "error"
  }
}

POST /v1/register

curl -X POST https://api.level5.cloud/v1/register

Response: HTTP 200

{
  "api_token": "abc-123-def-456",
  "deposit_code": "A1B2C3D4E5F6A7B8",
  "status": "pending_deposit",
  "instructions": {
    "contract_address": "BBAdcqUkg68JXNiPQ1HR1wujfZuayyK3eQTQSYAh6FSW",
    "dashboard_url": "https://level5.cloud/dashboard/abc-123-def-456"
  }
}

Rate limited to 10 requests per minute per IP.


GET /v1/pricing

curl https://api.level5.cloud/v1/pricing

Response: HTTP 200

{
  "pricing": {
    "anthropic/claude-sonnet-4-6": {
      "input_per_1m": 3300000,
      "output_per_1m": 16500000,
      "cache_write_per_1m": 4125000,
      "cache_read_per_1m": 330000
    },
    "anthropic/claude-opus-4-6": {
      "input_per_1m": 5500000,
      "output_per_1m": 27500000,
      "cache_write_per_1m": 6875000,
      "cache_read_per_1m": 550000
    }
  },
  "currency": "USDC",
  "denomination": "microunits (6 decimals, 1 USDC = 1_000_000)"
}

GET /proxy/{api_token}/balance

curl https://api.level5.cloud/proxy/{YOUR_API_TOKEN}/balance

Response: HTTP 200

{
  "api_token": "abc-123-def-456",
  "usdc_balance": 5000000,
  "is_active": true
}

usdc_balance is in USDC microunits (6 decimals). 5 000 000 = 5.00 USDC.


GET /proxy/{api_token}/transactions

curl "https://api.level5.cloud/proxy/{YOUR_API_TOKEN}/transactions?page=1&limit=50"

Response: HTTP 200

{
  "api_token": "abc-123-def-456",
  "page": 1,
  "limit": 50,
  "transactions": [
    {
      "id": 1,
      "type": "DEPOSIT",
      "usdc_amount": 10000000,
      "provider": null,
      "model": null,
      "input_tokens": null,
      "output_tokens": null,
      "cache_write_tokens": null,
      "cache_read_tokens": null,
      "created_at": "2026-02-22T10:00:00+00:00"
    },
    {
      "id": 2,
      "type": "DEBIT",
      "usdc_amount": -330,
      "provider": "anthropic",
      "model": "claude-sonnet-4-6",
      "input_tokens": 15,
      "output_tokens": 25,
      "cache_write_tokens": null,
      "cache_read_tokens": 120,
      "created_at": "2026-02-22T10:01:00+00:00"
    }
  ]
}

POST /proxy/{api_token}/v1/messages

Anthropic-compatible. Supports streaming (stream: true) and non-streaming.

curl https://api.level5.cloud/proxy/{YOUR_API_TOKEN}/v1/messages \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "stream": true,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Response headers include:

X-Balance-Remaining: 4999670

POST /proxy/{api_token}/v1/chat/completions

OpenAI-compatible. Supports streaming and non-streaming.

curl https://api.level5.cloud/proxy/{YOUR_API_TOKEN}/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "stream": true,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Response headers include:

X-Balance-Remaining: 4999670

X-Balance-Remaining Header

Every proxy response includes X-Balance-Remaining — the agent's current USDC balance

in microunits after the request is processed. Agents can use this to track spend without

polling the balance endpoint.

response = client.messages.create(...)
remaining = int(response.headers.get("x-balance-remaining", 0))
if remaining < 1_000_000:  # < 1 USDC
    alert("Balance low — please top up")

Cache Billing

Anthropic models support prompt caching. Level5 tracks cache write and read

tokens separately and bills them at the rates shown in /v1/pricing.

  • cache_write_tokens: tokens written to a new cache block (1.25x base input rate)
  • cache_read_tokens: tokens served from cache (0.10x base input rate — 10x cheaper)

Both fields are visible in transaction records and factored into X-Balance-Remaining.


Integration Examples

Python — Anthropic SDK

import anthropic

client = anthropic.Anthropic(
    base_url="https://api.level5.cloud/proxy/{YOUR_API_TOKEN}",
    api_key="level5",
)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Analyze market conditions"}],
)
print(response.content[0].text)

Python — OpenAI SDK

from openai import OpenAI

client = OpenAI(
    base_url="https://api.level5.cloud/proxy/{YOUR_API_TOKEN}/v1",
    api_key="level5",
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Analyze market conditions"}],
)
print(response.choices[0].message.content)

After Registration

# User has confirmed setup and saved their dashboard URL.
# Use the api_token returned by register_level5() to configure the SDK.
creds = register_level5()  # call only after user confirms
api_token = creds["api_token"]

import anthropic
client = anthropic.Anthropic(
    base_url=f"https://api.level5.cloud/proxy/{api_token}",
    api_key="level5",
)

Error Codes

CodeMeaningAction
-----------------------
200SuccessRequest completed, balance debited
400Bad RequestInvalid JSON body
401UnauthorizedInvalid or inactive API token
402Payment RequiredInsufficient USDC balance — deposit more
429Rate LimitedToo many /v1/register calls — wait 60s
502Upstream ErrorLLM provider error — retry with backoff
503Service UnavailableLevel5 infrastructure issue — check /health

Supported Models

Prices in USDC microunits per 1M tokens (6 decimals, 1 USDC = 1 000 000).

ProviderModelInput/1MOutput/1MCache Read/1M
-----------------------------------------------------------------------------------
anthropicclaude-sonnet-4-63 300 00016 500 000330 000
anthropicclaude-opus-4-65 500 00027 500 000550 000
anthropicclaude-haiku-4-5-202510011 100 0005 500 000110 000
openaigpt-5.21 750 00014 000 000175 000
openaigpt-5.3-codex1 750 00014 000 000175 000
openaigpt-4o2 500 00010 000 0001 250 000
openaio32 000 0008 000 000500 000
openrouterqwen3-max1 320 0006 600 000264 000
openrouterqwen3-coder-plus1 100 0005 500 000220 000
openrouterglm-51 100 0003 520 000220 000
openroutergrok-4-1-fast220 000550 00055 000
openroutergemini-3.1-pro-preview2 200 00013 200 000550 000

Anthropic and OpenRouter prices include the Level5 10% markup. OpenAI prices are

list rates; runtime markup applied. Use GET /v1/pricing for live rates.


Computational sovereignty is not a feature. It is a right.

版本历史

共 1 个版本

  • v1.6.2 当前
    2026-03-30 04:36 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

data-analysis

Excel / XLSX

ivangdavila
创建、检查和编辑 Microsoft Excel 工作簿及 XLSX 文件,支持可靠的公式、日期、类型、格式、重算及模板保留功能。
★ 366 📥 139,944
data-analysis

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 162 📥 59,660
data-analysis

Stock Analysis

udiedrichsen
{"answer":"基于雅虎财经数据,分析股票与加密货币。支持投资组合管理、自选股预警、股息分析、8维评分、热门趋势扫描及传闻/早期信号探测。适用于股票分析、持仓追踪、财报异动、加密监控、热门股追踪或提前发掘非主流传闻。"}
★ 269 📥 56,876