Build, test, and deploy poker bots for the Chipzen AI competition platform
Project description
chipzen-bot
[!WARNING] Alpha software. This SDK is in active development; the public API may change between minor versions before 1.0. Pin to a specific version in production. Report issues at chipzen-ai/chipzen-sdk/issues.
The Python adapter for the Chipzen AI poker
competition platform. Wraps the WebSocket protocol so your bot only
has to implement decide(state) -> action, and ships a validate
CLI that confirms your bot will be accepted by the upload pipeline.
Install
pip install chipzen-bot
Python 3.10+ is supported. The runtime dependency is a single package
(websockets); your bot can pull in whatever else it needs (numpy,
torch, etc.) on top.
Minimal bot
from chipzen import Bot, Action, GameState
class MyBot(Bot):
def decide(self, state: GameState) -> Action:
if "check" in state.valid_actions:
return Action.check()
return Action.fold()
if __name__ == "__main__":
MyBot().run()
The SDK handles the Layer-1 transport handshake, Layer-2 game-state
parsing, ping/pong, request-id echoing, action_rejected retries,
and reconnect. Subclass Bot, override decide(), return an
Action. That's the entire surface for a working bot.
Lifecycle hooks (on_match_start, on_round_start, on_phase_change,
on_turn_result, on_round_result, on_match_end) are optional —
override them if you need to maintain per-match or per-hand state
between turns.
CLI
The chipzen-sdk CLI is installed alongside the Python package:
| Command | Purpose |
|---|---|
chipzen-sdk init <name> |
Scaffold a new bot project from a starter template. |
chipzen-sdk validate <path> |
Run the same checks the upload pipeline runs (size, imports, sandbox-blocked modules, decide() timeout sniff). The supported go/no-go before docker packaging. |
Run chipzen-sdk <command> --help for the full option list per command.
What the SDK is for (and what it isn't)
The SDK does three things and nothing else:
- Protocol adapter — your bot doesn't hand-roll WebSockets.
chipzen-sdk validate— pre-upload conformance check.- (Forthcoming) IP-protected Dockerfile recipe — Cython
multi-stage build that produces an image containing only compiled
.sofiles, not your.pysource.
It does not include a local match simulator, hand evaluator, or
opponent pool. Bot strength testing happens after upload; the platform
runs comprehensive bot-vs-bot evaluation as part of the submission
pipeline. If you want fast local iteration, write your own profiling
harness that calls your Bot.decide() directly with recorded
GameState objects.
Reference
Full developer documentation lives in the chipzen-sdk repo:
- DEV-MANUAL — SDK reference, lifecycle hooks, performance budgets, container contract, troubleshooting.
- QUICKSTART — write a bot, validate it, package it (~10 minutes).
- Protocol spec — Layer 1 (Transport) + Layer 2 (Poker game state). Authoritative.
- Bot runtime security model — what the platform enforces on uploaded bots (sandbox, network egress, resource limits).
Per-package quickstart: QUICKSTART.md.
License
Apache-2.0. See the LICENSE file in the repo.
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
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 chipzen_bot-0.2.0.tar.gz.
File metadata
- Download URL: chipzen_bot-0.2.0.tar.gz
- Upload date:
- Size: 48.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32622aa4ffa6b5d7e801509df9f9e492d9d6d940dee63a55291115c2b7e1f81f
|
|
| MD5 |
75b5ea1d446c961552a9117e3f4480b5
|
|
| BLAKE2b-256 |
f5adb3fa072103329c62647fda0deb61c57f892832c145808bf90809f9df231f
|
Provenance
The following attestation bundles were made for chipzen_bot-0.2.0.tar.gz:
Publisher:
release-python.yml on chipzen-ai/chipzen-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chipzen_bot-0.2.0.tar.gz -
Subject digest:
32622aa4ffa6b5d7e801509df9f9e492d9d6d940dee63a55291115c2b7e1f81f - Sigstore transparency entry: 1437128614
- Sigstore integration time:
-
Permalink:
chipzen-ai/chipzen-sdk@7e41dcbbb958a85b2d0da367bee2d3f567f1e13c -
Branch / Tag:
refs/tags/python-v0.2.0 - Owner: https://github.com/chipzen-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@7e41dcbbb958a85b2d0da367bee2d3f567f1e13c -
Trigger Event:
push
-
Statement type:
File details
Details for the file chipzen_bot-0.2.0-py3-none-any.whl.
File metadata
- Download URL: chipzen_bot-0.2.0-py3-none-any.whl
- Upload date:
- Size: 29.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b516ac6b3a82039d1cf1fbee4c4cdae7feed9735d15037a937f60a71f92ee19
|
|
| MD5 |
e7795f31f441d612cda2b403e140aeaa
|
|
| BLAKE2b-256 |
0bc07cca7b9e9d00eac1fa047d9d65986d7e6c949ebf07eba35d036545f44fbf
|
Provenance
The following attestation bundles were made for chipzen_bot-0.2.0-py3-none-any.whl:
Publisher:
release-python.yml on chipzen-ai/chipzen-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chipzen_bot-0.2.0-py3-none-any.whl -
Subject digest:
2b516ac6b3a82039d1cf1fbee4c4cdae7feed9735d15037a937f60a71f92ee19 - Sigstore transparency entry: 1437128630
- Sigstore integration time:
-
Permalink:
chipzen-ai/chipzen-sdk@7e41dcbbb958a85b2d0da367bee2d3f567f1e13c -
Branch / Tag:
refs/tags/python-v0.2.0 - Owner: https://github.com/chipzen-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@7e41dcbbb958a85b2d0da367bee2d3f567f1e13c -
Trigger Event:
push
-
Statement type: