{
  "schemaVersion": "1.0",
  "item": {
    "slug": "satgate",
    "name": "SatGate",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/matt-dean-git/satgate",
    "canonicalUrl": "https://clawhub.ai/matt-dean-git/satgate",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/satgate",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=satgate",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/configure.sh",
      "scripts/health-check.sh",
      "scripts/install.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/satgate"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/satgate",
    "agentPageUrl": "https://openagent3.xyz/skills/satgate/agent",
    "manifestUrl": "https://openagent3.xyz/skills/satgate/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/satgate/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SatGate CLI",
        "body": "SatGate CLI manages API access, budgets, and monetization for the agent economy. Use it when you need to control what agents can access and how much they can spend.\n\nThey're the wallet. We're the register.\n\nIf the agent needs to pay for L402 APIs, install lnget from Lightning Labs. SatGate is for the server side — enforcement, attribution, and governance."
      },
      {
        "title": "Setup",
        "body": "Run scripts/configure.sh if no ~/.satgate/config.yaml exists. Or set environment variables:\n\n# For self-hosted gateway\nexport SATGATE_GATEWAY=http://localhost:9090\nexport SATGATE_ADMIN_TOKEN=sgk_your_token\n\n# For SatGate Cloud\nexport SATGATE_SURFACE=cloud\nexport SATGATE_GATEWAY=https://satgate-gateway.fly.dev\nexport SATGATE_BEARER_TOKEN=sg_your_api_key\nexport SATGATE_TENANT=your-tenant-slug\n\nAlways run satgate status first to confirm you're targeting the right gateway."
      },
      {
        "title": "Safety Rules",
        "body": "Check target first — run satgate status before any operation to verify gateway URL and surface.\nUse --dry-run on destructive operations (revoke, mint with large budgets).\nNever use --yes without explicit user approval.\nRevocation is irreversible — always confirm token name before revoking."
      },
      {
        "title": "Check gateway health",
        "body": "satgate status    # Full status (version, surface, uptime)\nsatgate ping      # Quick liveness check (exit 0/1)"
      },
      {
        "title": "Mint a token for a new agent",
        "body": "# Interactive (prompts for all fields)\nsatgate mint\n\n# Non-interactive\nsatgate mint --agent \"my-bot\" --budget 500 --expiry 30d --routes \"/api/openai/*\"\n\n# With parent (delegation under existing token)\nsatgate mint --agent \"child-bot\" --budget 100 --parent \"parent-token-id\"\n\n# Preview without executing\nsatgate mint --agent \"my-bot\" --budget 500 --dry-run"
      },
      {
        "title": "Check agent spend",
        "body": "satgate spend                   # Org-wide cost center rollups\nsatgate spend --agent \"cs-bot\"  # Per-agent breakdown\nsatgate spend --period 7d       # Time-scoped"
      },
      {
        "title": "List and inspect tokens",
        "body": "satgate tokens                  # All tokens with status, spend, budget\nsatgate token <id>              # Detail: scope, delegation chain, spend"
      },
      {
        "title": "Revoke a compromised agent",
        "body": "satgate revoke <token-id>           # Interactive confirmation\nsatgate revoke <token-id> --dry-run # Preview only"
      },
      {
        "title": "View security threats",
        "body": "satgate report threats          # Blocked requests, anomalies"
      },
      {
        "title": "Check policy modes",
        "body": "satgate mode                    # Current mode per route (read-only)"
      },
      {
        "title": "Common Workflows",
        "body": "\"New agent needs API access\"\n→ satgate mint --agent \"agent-name\" --budget 500 --routes \"/api/openai/*\"\n\n\"How much are agents spending?\"\n→ satgate spend\n\n\"Agent is misbehaving\"\n→ satgate revoke <token-id>\n\n\"Board wants AI spend report\"\n→ satgate spend --json > report.json\n\n\"Is the gateway healthy?\"\n→ satgate ping"
      },
      {
        "title": "Output Formats",
        "body": "All commands support --json for machine-readable output:\n\nsatgate tokens --json | jq '.[] | select(.status == \"active\")'\nsatgate spend --json > monthly-report.json"
      },
      {
        "title": "Pairing with lnget",
        "body": "SatGate (server-side) + lnget (client-side) = complete agent commerce stack.\n\nlnget: Agents pay for L402-gated APIs automatically\nSatGate CLI: Operators mint tokens, set budgets, revoke access, view spend\n\nAn agent using lnget hits your SatGate-protected endpoint → SatGate enforces the budget and attributes the cost → you see it in satgate spend.\n\nInstall lnget: claude plugin marketplace add lightninglabs/lightning-agent-tools"
      }
    ],
    "body": "SatGate CLI\n\nSatGate CLI manages API access, budgets, and monetization for the agent economy. Use it when you need to control what agents can access and how much they can spend.\n\nThey're the wallet. We're the register.\n\nIf the agent needs to pay for L402 APIs, install lnget from Lightning Labs. SatGate is for the server side — enforcement, attribution, and governance.\n\nSetup\n\nRun scripts/configure.sh if no ~/.satgate/config.yaml exists. Or set environment variables:\n\n# For self-hosted gateway\nexport SATGATE_GATEWAY=http://localhost:9090\nexport SATGATE_ADMIN_TOKEN=sgk_your_token\n\n# For SatGate Cloud\nexport SATGATE_SURFACE=cloud\nexport SATGATE_GATEWAY=https://satgate-gateway.fly.dev\nexport SATGATE_BEARER_TOKEN=sg_your_api_key\nexport SATGATE_TENANT=your-tenant-slug\n\n\nAlways run satgate status first to confirm you're targeting the right gateway.\n\nSafety Rules\nCheck target first — run satgate status before any operation to verify gateway URL and surface.\nUse --dry-run on destructive operations (revoke, mint with large budgets).\nNever use --yes without explicit user approval.\nRevocation is irreversible — always confirm token name before revoking.\nCommands\nCheck gateway health\nsatgate status    # Full status (version, surface, uptime)\nsatgate ping      # Quick liveness check (exit 0/1)\n\nMint a token for a new agent\n# Interactive (prompts for all fields)\nsatgate mint\n\n# Non-interactive\nsatgate mint --agent \"my-bot\" --budget 500 --expiry 30d --routes \"/api/openai/*\"\n\n# With parent (delegation under existing token)\nsatgate mint --agent \"child-bot\" --budget 100 --parent \"parent-token-id\"\n\n# Preview without executing\nsatgate mint --agent \"my-bot\" --budget 500 --dry-run\n\nCheck agent spend\nsatgate spend                   # Org-wide cost center rollups\nsatgate spend --agent \"cs-bot\"  # Per-agent breakdown\nsatgate spend --period 7d       # Time-scoped\n\nList and inspect tokens\nsatgate tokens                  # All tokens with status, spend, budget\nsatgate token <id>              # Detail: scope, delegation chain, spend\n\nRevoke a compromised agent\nsatgate revoke <token-id>           # Interactive confirmation\nsatgate revoke <token-id> --dry-run # Preview only\n\nView security threats\nsatgate report threats          # Blocked requests, anomalies\n\nCheck policy modes\nsatgate mode                    # Current mode per route (read-only)\n\nCommon Workflows\n\n\"New agent needs API access\" → satgate mint --agent \"agent-name\" --budget 500 --routes \"/api/openai/*\"\n\n\"How much are agents spending?\" → satgate spend\n\n\"Agent is misbehaving\" → satgate revoke <token-id>\n\n\"Board wants AI spend report\" → satgate spend --json > report.json\n\n\"Is the gateway healthy?\" → satgate ping\n\nOutput Formats\n\nAll commands support --json for machine-readable output:\n\nsatgate tokens --json | jq '.[] | select(.status == \"active\")'\nsatgate spend --json > monthly-report.json\n\nPairing with lnget\n\nSatGate (server-side) + lnget (client-side) = complete agent commerce stack.\n\nlnget: Agents pay for L402-gated APIs automatically\nSatGate CLI: Operators mint tokens, set budgets, revoke access, view spend\n\nAn agent using lnget hits your SatGate-protected endpoint → SatGate enforces the budget and attributes the cost → you see it in satgate spend.\n\nInstall lnget: claude plugin marketplace add lightninglabs/lightning-agent-tools"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/matt-dean-git/satgate",
    "publisherUrl": "https://clawhub.ai/matt-dean-git/satgate",
    "owner": "matt-dean-git",
    "version": "0.1.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/satgate",
    "downloadUrl": "https://openagent3.xyz/downloads/satgate",
    "agentUrl": "https://openagent3.xyz/skills/satgate/agent",
    "manifestUrl": "https://openagent3.xyz/skills/satgate/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/satgate/agent.md"
  }
}