Architecture
Polygolem is a Go protocol and automation stack for Polymarket CLOB V2 with a thin Cobra-based CLI on top.
Three Layers
| Layer | Packages | Role |
|---|---|---|
cmd/polygolem | 1 | Binary entry point. Wires Cobra and exits. |
pkg/ | 16 | Public 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; market WebSocket events use public pkg/stream DTOs; pkg/bookreader is deprecated in favor of pkg/orderbook; enrichment and rewards type paths still need cleanup. |
internal/ | 21 | Implementation. 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/)
| Package | Purpose |
|---|---|
pkg/universal | Single client for Gamma + CLOB + Data API + Discovery + Stream |
pkg/gamma | Full Gamma API surface — 26 methods (markets, events, tags, comments, profiles) |
pkg/data | Read-only Data API analytics client returning pkg/types DTOs |
pkg/types | Public DTOs shared by SDK packages |
pkg/clob | CLOB market-data plus authenticated account/order DTOs |
pkg/contracts | Polygon contract registry and deposit-wallet bytecode checks |
pkg/orderbook | Read-only CLOB order-book reader |
pkg/bookreader | Deprecated compatibility wrapper for pkg/orderbook |
pkg/marketresolver | Market + token ID resolution |
pkg/bridge | Bridge API — supported assets, deposit addresses, quotes |
pkg/relayer | Builder relayer primitives — wallet create, wallet batch, nonce, polling |
pkg/stream | Public CLOB WebSocket market stream client |
pkg/pagination | Cursor and offset pagination with concurrent batching |
Internal Packages (internal/)
Protocol Clients
| Package | Purpose |
|---|---|
internal/gamma | Gamma HTTP client — 26 methods |
internal/clob | CLOB V2 client — 37 methods, EIP-712, POLY_1271, ERC-7739 |
internal/dataapi | Data API — positions, volume, leaderboards |
internal/relayer | Builder relayer — WALLET-CREATE, WALLET batch, nonce, polling |
internal/stream | WebSocket market stream implementation behind pkg/stream |
internal/rpc | Low-level Polygon RPC helpers: bytecode checks, direct transfers, swaps, deploy estimates |
Cross-Cutting
| Package | Purpose |
|---|---|
internal/auth | L0/L1/L2 auth, EIP-712, CREATE2 derivation, builder attribution, signers |
internal/polytypes | V2 protocol types and aliases — Gamma DTO aliases, CLOB data, enrichment, order payloads |
internal/transport | HTTP retry, rate limiter, circuit breaker, redaction |
internal/config | Config loading, defaults, env binding, validation, redaction |
Application
| Package | Purpose |
|---|---|
internal/cli | Cobra command construction |
internal/wallet | Deposit wallet — derive, deploy, status, batch signing |
internal/orders | OrderIntent, fluent builder, validation |
internal/execution | Paper executor + live executor surface |
internal/marketdiscovery | Gamma + CLOB enrichment service |
internal/modes | Read-only / paper / live mode gates |
internal/risk | Per-trade caps, daily loss limits, circuit breaker |
internal/paper | Local paper positions and persisted state |
internal/preflight | Readiness checks |
internal/output | Table + JSON rendering |
internal/errors | Structured 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/{universal, gamma, data, types, clob, contracts, stream, orderbook, bookreader, marketresolver, bridge, relayer, pagination}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
- Go SDK Contracts — every public type and method signature
- Internal Packages — full internal API surface
- Safety Model — mode boundary enforcement
docs/ARCHITECTURE.md— canonical document