Skip to main content

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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

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)

Source distribution for agt-lab-server 0.1.7
File Size Uploaded Provenance
agt_lab_server-0.1.7.tar.gz 3.1 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agt-lab-server 0.1.7
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page