Skip to main content

Ghost Protocol Python SDK for GhostGate Express, open x402, telemetry, and direct GhostWire escrow.

Project description

GhostGate Python SDK

Python SDK for Ghost Protocol:

  • Express access via connect()
  • standards-native x402 requests via request_x402()
  • automatic x402 settlement reporting for long-lived Python servers
  • merchant x402 settlement reporting via report_x402_settlement()
  • GhostWire direct escrow helpers

Install

pip install ghostgate-sdk

Express example

import os
from ghostgate import GhostGate, build_wire_request_spec_hash

sdk = GhostGate(
    api_key=os.environ["GHOST_API_KEY"],
    private_key=os.environ["GHOST_SIGNER_PRIVATE_KEY"],
    base_url=os.getenv("GHOST_GATE_BASE_URL", "https://ghostprotocol.cc"),
    chain_id=8453,
    service_slug="agent-18755",
    credit_cost=5,
)

result = sdk.connect()
print(result)

x402 example

request_x402() is the low-level Python helper. Without payment_header, it returns the initial merchant response, which may be a 402 challenge. Pass a valid payment_header on the retry if you want to complete the flow yourself.

import os
from ghostgate import GhostGate

sdk = GhostGate(
    private_key=os.environ["GHOST_SIGNER_PRIVATE_KEY"],
    chain_id=8453,
)

result = sdk.request_x402(
    url="https://merchant.example.com/ask",
    method="POST",
    body={"prompt": "hello"},
)

print(result)

Merchant x402 settlement reporting

For long-lived Python servers, auto-reporting is the default onboarding path.

Available Python x402 surfaces:

  • create_settlement_evidence(...)
  • create_x402_settlement_reporter(...)
  • with_ghost_x402_fastapi(...)
  • with_ghost_x402_flask(...)
  • report_x402_settlement(...)

The canonical settlement evidence contract is the same across SDKs:

  • request_id
  • payment_reference
  • payer_identity
  • payer_address
  • scheme
  • network
  • chain_id
  • asset
  • amount_atomic
  • decimals
  • success
  • status_code
  • latency_ms
  • occurred_at
  • metadata

Automatic reporting example

from ghostgate import GhostGate, GhostX402AdapterConfig, with_ghost_x402_fastapi

sdk = GhostGate(
    private_key=os.environ["GHOST_SIGNER_PRIVATE_KEY"],
    base_url=os.getenv("GHOST_GATE_BASE_URL", "https://ghostprotocol.cc"),
    chain_id=8453,
    service_slug="agent-18755",
)

reporter = sdk.create_x402_settlement_reporter(
    runtime="python_server",
    on_event=lambda event: print(event["name"], event["queueSize"]),
)

config = GhostX402AdapterConfig(
    gate=sdk,
    agent_id="18755",
    payment_requirements={
        "scheme": "exact",
        "network": "base",
        "maxAmountRequired": "1000000",
        "resource": "https://merchant.example.com/ask",
        "description": "Paid ask endpoint",
        "mimeType": "application/json",
        "payTo": "0x1111111111111111111111111111111111111111",
        "maxTimeoutSeconds": 300,
        "asset": "USDC",
        "extra": {"decimals": 6},
    },
    x402_client=object(),
    reporter=reporter,
    decode_payment_header=lambda _header: {"scheme": "exact", "network": "base"},
    verify_payment=lambda _input: {"isValid": True, "payer": "0xpayer"},
    settle_payment=lambda _input: {
        "success": True,
        "transaction": "0xabc123",
        "network": "base",
        "payer": "0xpayer",
    },
)

paid_handler = with_ghost_x402_fastapi(
    config,
    lambda _args: {"ok": True},
)

Use reporter.get_snapshot()["counters"] and on_event to measure:

  • payment_verified
  • report_enqueued
  • report_sent
  • report_accepted
  • duplicate
  • report_dropped

Manual fallback

report = sdk.report_x402_settlement(
    agent_id="18755",
    service_slug="agent-18755",
    request_id="req_123",
    payment_reference="0xabc123",
    payer_identity="0xpayer",
    amount_atomic="1000000",
    scheme="exact",
    network="base",
    chain_id=8453,
    asset="USDC",
    decimals=6,
    success=True,
    status_code=200,
)

print(report)

Keep the direct report_x402_settlement(...) path available for unsupported runtimes, incident recovery, or custom merchants that do not use the framework wrappers.

Canonical methods

  • connect(...)
  • request_x402(...)
  • report_x402_settlement(...)
  • create_x402_settlement_reporter(...)
  • with_ghost_x402_fastapi(...)
  • with_ghost_x402_flask(...)
  • pulse(...)
  • outcome(...)
  • start_heartbeat(...)
  • create_wire_quote(...)
  • prepare_wire_job(...)
  • record_wire_artifacts(...)
  • get_wire_job(...)
  • wait_for_wire_terminal(...)
  • get_wire_deliverable(...)
  • build_wire_request_spec_hash(...)

GhostWire request example

request_payload = {
    "prompt": "Roast my wallet honestly.",
    "walletAddress": "0xclient...",
    "metadata": {
        "skill": "booski",
        "tone": "merciless",
    },
}

prepared = sdk.prepare_wire_job(
    quote_id="wq_123",
    client="0xclient...",
    provider="0xprovider...",
    evaluator="0xevaluator...",
    request=request_payload,
    spec_hash=build_wire_request_spec_hash(request_payload),
    metadata_uri="https://merchant.example.com/ghostwire/deliverable?contract=0x...&job=3",
)

Automatic x402 reporting in the MVP is first-class for long-lived Python servers with runtime="python_server".

Use:

  • runtime="python_server" for long-lived servers
  • runtime="serverless_python" for best-effort auto-reporting in short-lived runtimes
  • direct report_x402_settlement(...) as the manual fallback when you want explicit control

Backward-compatible aliases are also available:

  • send_pulse(...)
  • report_consumer_outcome(...)

Notes

  • connect() is Express only.
  • For rail selection and pricing policy, use docs/developer-portal/onboarding-and-configuration.md as the source of truth.
  • request_x402() is the real x402 helper, but it is intentionally low-level: it returns the initial challenge unless you supply a retry payment_header.
  • GhostRank credit for x402 should normally come from the framework wrapper + shared reporter path on supported runtimes. Keep direct report_x402_settlement(...) as the fallback.
  • For GhostWire, request is the consumer-authored task payload. Keep metadata_uri for the merchant-controlled deliverable locator.
  • Use signer private keys only in trusted backend/server/CLI environments.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ghostgate_sdk-0.4.1.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ghostgate_sdk-0.4.1-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file ghostgate_sdk-0.4.1.tar.gz.

File metadata

  • Download URL: ghostgate_sdk-0.4.1.tar.gz
  • Upload date:
  • Size: 33.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ghostgate_sdk-0.4.1.tar.gz
Algorithm Hash digest
SHA256 38577084d173aba7fbd01ac6a65da10d30dd9ad76bcb10c5c191dd911518003b
MD5 fd4262e9724c7c33fe981da20009cee6
BLAKE2b-256 f92c176ad982270d038dcb4cf36447c63cb6729c1879a8686fc86dfcb231e4e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghostgate_sdk-0.4.1.tar.gz:

Publisher: publish-python-sdk.yml on Ghost-Protocol-Infrastructure/GHOST_PROTOCOL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghostgate_sdk-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: ghostgate_sdk-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ghostgate_sdk-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a676d3af198a36d6b15bc097f8a251fa04a8fa7fe5d705e3ba4c9fd236a125dc
MD5 70d73c63c401b33f4db1293990cbf89a
BLAKE2b-256 3fb3d7fce60e7e7792f385dd969015c3dfef58986ad6310e1567a46e5089c12f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghostgate_sdk-0.4.1-py3-none-any.whl:

Publisher: publish-python-sdk.yml on Ghost-Protocol-Infrastructure/GHOST_PROTOCOL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page