Skip to content

Architecture

Polygolem is a Go protocol and automation stack for Polymarket CLOB V2 with a thin Cobra-based CLI on top.

Three Layers

LayerPackagesRole
cmd/polygolem1Binary entry point. Wires Cobra and exits.
pkg/21Public Go SDK contracts. Gamma, Data API, and read-only CLOB DTOs use public pkg/types; authenticated CLOB account/order DTOs live in pkg/clob; contract registry/readiness lives in pkg/contracts; V2 market WebSocket events use public pkg/stream DTOs; normalized live snapshots live in pkg/marketdata; pkg/plugins defines extensibility interfaces; pkg/experimental/ hosts APIs staged for SDK promotion.
internal/21Implementation. Not part of public API.

The CLI and public SDK both depend on the internal protocol implementation. The internal/ packages do not depend on cmd/.

Public SDK (pkg/)

PackagePurpose
pkg/bridgeBridge API client — supported assets, deposit addresses, quotes
pkg/builderBuilder attribution and fee configuration for order placement
pkg/clobCLOB market-data plus authenticated account/order DTOs
pkg/contractsPolygon contract registry and deposit-wallet bytecode checks
pkg/ctfConditional Tokens Framework (CTF) helpers for position management
pkg/dataRead-only Data API analytics client returning pkg/types DTOs
pkg/enabletradingHeadless enable-trading flow: ClobAuth API keys and token approvals
pkg/fundingDeposit-wallet funding helpers (ERC-20 transfers and balance checks)
pkg/gammaFull Gamma API surface — 26 methods (markets, events, tags, comments, profiles)
pkg/marketdataNormalized live best bid, best ask, spread, midpoint, tick-size, last-trade, and book snapshots
pkg/marketresolverMarket + token ID resolution
pkg/orderbookRead-only CLOB order-book reader
pkg/orderresultsOrder result types and response parsing for placement outcomes
pkg/paginationCursor and offset pagination with concurrent batching
pkg/pluginsPlugin interfaces for market data and risk extensibility
pkg/relayerBuilder relayer primitives — wallet create, wallet batch, nonce, polling
pkg/settlementV2 winner redemption planning, adapter calls, and readiness gates
pkg/streamPublic CLOB WebSocket market stream client, including V2 custom feature events
pkg/typesPublic DTOs shared by SDK packages
pkg/universalSingle client for Gamma + CLOB + Data API + Discovery + Stream
pkg/walletPublic deposit-wallet primitives — derive, deploy, status, batch signing

Experimental Packages

PackagePurpose
pkg/experimental/ordersFluent OrderIntent builder and validation (staged for SDK promotion)
pkg/experimental/authEIP-712 domain helpers, signature type constants, and hex utilities (staged for SDK promotion)

Internal Packages (internal/)

Protocol Clients

PackagePurpose
internal/gammaGamma HTTP client — 26 methods
internal/clobCLOB V2 client — 37 methods, EIP-712, POLY_1271, ERC-7739
internal/dataapiData API — positions, volume, leaderboards
internal/relayerBuilder relayer — WALLET-CREATE, WALLET batch, nonce, polling
internal/streamWebSocket market stream implementation behind pkg/stream
internal/rpcLow-level Polygon RPC helpers: bytecode checks, direct transfers, swaps, deploy estimates

Cross-Cutting

PackagePurpose
internal/authL0/L1/L2 auth, EIP-712, CREATE2 derivation, builder attribution, signers
internal/polytypesV2 protocol types and aliases — Gamma DTO aliases, CLOB data, enrichment, order payloads
internal/transportHTTP retry, rate limiter, circuit breaker, redaction
internal/configConfig loading, defaults, env binding, validation, redaction

Application

PackagePurpose
internal/cliCobra command construction
internal/walletDeposit wallet — derive, deploy, status, batch signing
internal/ordersOrderIntent, fluent builder, validation
internal/executionPaper executor + live executor surface
internal/marketdiscoveryGamma + CLOB enrichment service
internal/modesRead-only / paper / live mode gates
internal/riskPer-trade caps, daily loss limits, circuit breaker
internal/paperLocal paper positions and persisted state
internal/preflightReadiness checks
internal/outputTable + JSON rendering
internal/errorsStructured error types

Dependency Direction

cmd/polygolem
|
internal/cli
|
internal/{config, modes, preflight, output, errors}
|
internal/{gamma, clob, dataapi, stream, relayer, rpc} ← protocol clients
|
internal/{auth, transport, polytypes} ← cross-cutting
|
internal/{wallet, orders, execution, risk, paper, marketdiscovery}
^
|
pkg/{bridge, builder, clob, contracts, ctf, data, enabletrading, funding, gamma, marketdata, marketresolver, orderbook, orderresults, pagination, plugins, relayer, settlement, stream, types, universal, wallet}

Mode System

  • Read-only (default): public market data. No credentials needed.
  • Paper: local simulation. Never reaches authenticated endpoints.
  • Live: gated. Requires preflight + all four safety gates.

See Also