Sidepit — fair electronic pits for agents and humans
Point your agent at this repo and say: “read AGENTS.md and show me the live quote.”
Two minutes. No credentials. Live production data.
You keep the money key. Your agent gets a trading-only key you can revoke. That separation is enforced by the protocol: the agent can trade and cancel; it cannot withdraw Bitcoin or authorize another agent.
The cockpit: transparent DLOB book, live position and risk envelope, and a prompt that takes plain english.
doggie // wallet (ctrl+d): your wealth as one number, the market as two buttons.
Sidepit is a Bitcoin-margined forwards exchange. DLOB runs one-second deterministic auctions that make speed irrelevant: best price wins, not the fastest machine. Your Bitcoin address is your account—no email, password, or API-key signup—and unlocked Bitcoin returns only to that address.
The pair of public skills is the product journey:
sidepit-onboardinghelps the human enter beta codesidepit2025, connect a Native SegWit UniSat wallet, fund deliberately, authorize a locally created agent key, and verify it ACTIVE.sidepit-tradeloads only that restricted key, previews exposure, published margin allowance, user-verified fee, and either an exact limit or a market order, previews the exposure, trades, reconciles, and flattens.
Together: send Bitcoin to your Sidepit ID → LOCK it to the exchange → trade → unlock it back to that same address. Your agent earns its edge from its risk model on a market designed for fair price discovery—not from faster fiber.
Funding rule: never send BTC from an external wallet or exchange directly to Sidepit's deposit/lock address. Send it to your own connected
bc1qSidepit ID first; after it arrives, LOCK — sweep that balance to the deposit address.
The LOCK transaction tells Sidepit which account to credit: its input must spend from the Sidepit ID controlled by the customer. An external wallet or exchange sending straight to the lock address does not identify the intended account.
Claude + Sidepit: two terminals
Install the cockpit and SDK from anywhere, then clone the skills:
pip install sidepit
git clone --recurse-submodules https://github.com/sidepit/Public-API
Prefer an isolated app install? Use pipx install sidepit. If your system
requires a virtual environment:
python3 -m venv .venv
source .venv/bin/activate
pip install sidepit
Terminal one — the cockpit:
sidepit
Terminal two — Claude with the Sidepit playbook:
cd Public-API
claude
Tell Claude:
Read
skills/sidepit-onboarding/SKILL.mdand onboard me.
Claude | Sidepit | make money! Your key, your sizing, your risk, your call.
Using Sidepit as a Python SDK? The same installation gives your code:
from sidepit_trader import RequestClient, Signer, Submitter
The installed commands:
sidepit # cockpit: book, positions, plain-English prompt
sidepit doggie # wallet view: your wealth as one number, two buttons
sidepit list # your wallets
sidepit use <name> # switch wallet
sidepit import # add a key (12 words or WIF, hidden input)
Look before you trust (no keys, about 2 minutes)
git clone --recurse-submodules https://github.com/sidepit/Public-API && cd Public-API
./install_sidepit
python-client/.venv/bin/python examples/quickstart.py
install_sidepit builds the environment and gives you one command, sidepit.
Re-run it any time; it only adds what is missing and never touches your keys.
Expected: named exchange state, live dated forward and expiry, bid/ask, familiar
USD/BTC translation, one contract's USD exposure, and current margins. Live
production data, zero credentials. Native prices are satoshis per USD
(inverse): USD/BTC = 100,000,000 / price.
The sidepit command
One command drives the whole client. Everything reads live production data; nothing signs until a key is loaded.
Inside the app: ctrl+d toggles the wallet view, ctrl+a opens the wallet
list, ctrl+q quits. Logs go to ~/.sidepit/tui.log.
Point your agent at the right door
New account or agent authorization:
Clone https://github.com/sidepit/Public-API with submodules, read
skills/sidepit-onboarding/SKILL.md, and onboard me without ever asking for my wallet key or seed words.
Already have an ACTIVE trading-only key:
Read
skills/sidepit-trade/SKILL.md. Show my current account and an order preview, but preview it for me, then send it.
The first skill keeps the human's wallet inside UniSat. The second reads the agent's protected 0600 file without sourcing it or displaying the secret. Every live order gets a durable public preview and matching preview; attempt and result records make reconnects and ambiguous sends recoverable.
Execution fees are 125 sats per contract per side of each fill. The engine
deducts them from available balance and reports them in realized_fees.
Repo map
| path | what |
|---|---|
python-client/sidepit_trader/ |
the SDK — signing, feeds, orders, wallet, Trader base class |
python-client/proto/ |
generated protobuf stub (from the pinned proto) |
examples/ |
start here — keyless quickstart |
skills/sidepit-onboarding/ |
human onboarding: UniSat, TUI, or manual → funded account → ACTIVE agent key |
skills/sidepit-trade/ |
agent trading: preview → send → reconcile → flatten |
AGENTS.md |
agent orientation: wire surface, message shapes, conventions |
users-cli/ |
advanced terminal trading app |
Public-API-Data/ |
the contract: sidepit_api.proto (submodule) — every message the exchange speaks |
python-client/facade/ |
optional local REST/WS gateway over the wire |
integrations/ccxt/ |
CCXT adapter (runs over the facade) |
DISTRIBUTION.md |
what ships today and the skills/update/Windows roadmap |
Development install from a clone: pip install -e . (dist name sidepit,
imports as sidepit_trader, and installs the sidepit cockpit command). The
examples run straight from the clone either way.
The wire
Transport is NNG over TCP at api.sidepit.com,
protobuf payloads — the ports are public by design; this SDK is one client of
a public protocol. The proto in Public-API-Data/ is the full reference.
Full docs: docs.sidepit.com · app:
app.sidepit.com
MIT license.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sidepit-0.1.1.tar.gz.
File metadata
- Download URL: sidepit-0.1.1.tar.gz
- Upload date:
- Size: 96.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8200946723ed3e49015a8e41058cc5497e530d400338ae9c37bda10ca81626fb
|
|
| MD5 |
9c34126a13372a01dfa7b225155d2b3e
|
|
| BLAKE2b-256 |
c05db3f0f1cfaf6e5aeba6c55dd611119c079854bfb6c0f722d8e3d90a3ffd89
|
Provenance
The following attestation bundles were made for sidepit-0.1.1.tar.gz:
Publisher:
publish.yml on sidepit/Public-API
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sidepit-0.1.1.tar.gz -
Subject digest:
8200946723ed3e49015a8e41058cc5497e530d400338ae9c37bda10ca81626fb - Sigstore transparency entry: 2785393174
- Sigstore integration time:
-
Permalink:
sidepit/Public-API@0aadb1747585bf5f772844b388738afb8364cc99 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/sidepit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0aadb1747585bf5f772844b388738afb8364cc99 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sidepit-0.1.1-py3-none-any.whl.
File metadata
- Download URL: sidepit-0.1.1-py3-none-any.whl
- Upload date:
- Size: 105.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bbdc3ad627fec1c2041e58ce8f33aa9ff689825d62191a06cb66efc4361ef0a
|
|
| MD5 |
efd5b4b76bb582b8e41a590147e24eda
|
|
| BLAKE2b-256 |
4c64ce50543d2eff19fccc3c75ac93af3b45ab1d5079a20b05e3df307ee449e6
|
Provenance
The following attestation bundles were made for sidepit-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on sidepit/Public-API
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sidepit-0.1.1-py3-none-any.whl -
Subject digest:
5bbdc3ad627fec1c2041e58ce8f33aa9ff689825d62191a06cb66efc4361ef0a - Sigstore transparency entry: 2785393209
- Sigstore integration time:
-
Permalink:
sidepit/Public-API@0aadb1747585bf5f772844b388738afb8364cc99 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/sidepit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0aadb1747585bf5f772844b388738afb8364cc99 -
Trigger Event:
push
-
Statement type: