AGT Server
A comprehensive tournament server for game theory lab competitions, supporting multiple game types including Rock Paper Scissors, Battle of the Sexes, Chicken, Prisoner's Dilemma, Lemonade Stand, Auctions, and more.
Features
- Multiple Game Types: Support for 9+ different game theory scenarios
- Real-time Dashboard: Web-based monitoring and control interface
- Tournament Management: Automated player matching and scoring
- Extensible Architecture: Easy to add new games and agents
- Command Line Tools: Simple CLI for server and dashboard management
- Python Package: Easy to import and integrate into your projects
Supported Games
- RPS: Rock Paper Scissors (2 players, 100 rounds)
- BOS: Battle of the Sexes (2 players, 100 rounds)
- BOSII: Battle of the Sexes II (2 players, 100 rounds)
- Chicken: Chicken Game (2 players, 100 rounds)
- PD: Prisoner's Dilemma (2 players, 100 rounds)
- Lemonade: Lemonade Stand (2 players, 100 rounds)
- Auction: Auction Game (2+ players, 100 rounds)
- ADX2D: Ad Exchange Two Day (2+ players, 100 rounds)
- ADX1D: Ad Exchange One Day (2+ players, 100 rounds)
Quick Start
Installation
From Source
git clone https://github.com/yourusername/agt-server.git
cd agt-server
pip install -e .
From PyPI (when published)
pip install agt-server
Basic Usage
Command Line Interface
Start the server:
agt-server --game rps --port 8080
Start the dashboard:
agt-dashboard --port 8081 --server-port 8080
Start both together:
python -m agt_server.cli both --game rps
Python API
import asyncio
from agt_server import AGTServer
# Create and configure server
config = {
"game_type": "rps",
"num_rounds": 100,
"num_players": 2
}
server = AGTServer(config, host="0.0.0.0", port=8080)
# Run the server
asyncio.run(server.run())
Web Dashboard
Once running, access the dashboard at:
- Dashboard: http://localhost:8081
- Server: localhost:8080
Detailed Usage
Server Configuration
The server accepts various configuration options:
config = {
"game_type": "rps", # Game to run
"num_rounds": 100, # Rounds per game
"num_players": 2, # Players per game
"allowed_games": ["rps"], # Restrict to specific games
"verbose": False # Enable debug output
}
Command Line Options
agt-server
agt-server [OPTIONS]
Options:
--host TEXT Host to bind to [default: 0.0.0.0]
--port INTEGER Port to bind to [default: 8080]
--game TEXT Game type [default: rps]
--num-rounds INTEGER Number of rounds [default: 100]
--num-players INTEGER Number of players [default: 2]
--verbose Enable verbose logging
--config PATH Custom configuration file
--help Show this message and exit
agt-dashboard
agt-dashboard [OPTIONS]
Options:
--port INTEGER Dashboard port [default: 8081]
--server-port INTEGER Server port [default: 8080]
--host TEXT Dashboard host [default: localhost]
--server-host TEXT Server host [default: localhost]
--help Show this message and exit
Custom Configuration Files
Create a JSON configuration file:
{
"game_type": "lemonade",
"num_rounds": 200,
"num_players": 4,
"verbose": true,
"allowed_games": ["lemonade", "auction"]
}
Use it with:
agt-server --config my_config.json
Development
Project Structure
agt_server/
├── core/ # Game engine and core logic
├── server/ # Tournament server
├── dashboard/ # Web dashboard
├── cli.py # Command line interface
├── __init__.py # Package initialization
└── requirements.txt
Running Tests
# Install development dependencies
pip install -e .[dev]
# Run tests
pytest tests/
Building the Package
# Build source distribution
python setup.py sdist
# Build wheel
python setup.py bdist_wheel
# Install build tools
pip install build
python -m build
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- Documentation: Read the Docs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Acknowledgments
- Game theory research community
- Educational institutions using AGT for teaching
- Contributors and maintainers
Metadata
Release files for agt-lab-server 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| agt_lab_server-0.1.7.tar.gz | 3.1 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agt_lab_server-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.7 MB
Release files / agt_lab_server-0.1.7.tar.gz
| Download URL | agt_lab_server-0.1.7.tar.gz |
|---|---|
| Size | 3.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f294b2eff5fff111c6dce9088e6e50017b2be3bb11f9946d85c660766791ab29
|
|
BLAKE2b-256 checksum How to use checksums |
7b58fe8d3e419f9392595f3fb10562b908d0b392f3e90aafb678453f2e95eb20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / agt_lab_server-0.1.7-py3-none-any.whl
| Download URL | agt_lab_server-0.1.7-py3-none-any.whl |
|---|---|
| Size | 3.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29652bdb74702388b308d0cff37942f7214404b972e492d84d74cafbe4284ce4
|
|
BLAKE2b-256 checksum How to use checksums |
29826b14f79b7237f1dd29da63edd41dd2942df3ccdb10184a00e9a1bbc98255
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Security for agt-lab-server 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.