Catalog PyPI
Back to packageRELEASE DETAILS

0.1.7

PyPI

agt-lab-server

AGT Lab Server for Game Theory Competitions - A tournament server for game theory lab competitions

Published7 Nov 2025
Direct dependencies13
Transitive dependenciesNot calculated

README

Version 0.1.7 documentation

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:

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

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 14

Native requirements
13 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
numpy>=1.21.0runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
pandas>=1.3.0runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncioruntime
matplotlib
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
matplotlibruntime
Flask
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
Flask>=2.0.0runtime
requests
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
requests>=2.25.0runtime
psutil
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
psutil>=5.8.0runtime
asyncio
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
asyncio>=3.4.3runtime
aiohttp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
aiohttp>=3.8.0runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
pytest; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio; extra == "dev"runtime
black
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
black; extra == "dev"runtime
flake8
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
flake8; extra == "dev"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
mypy; extra == "dev"runtime

Distribution files

2 collected
agt_lab_server-0.1.7-py3-none-any.whl

bdist_wheel · 3,599.59 KB · Python py3

Source file
agt_lab_server-0.1.7.tar.gz

sdist · 2,985.1 KB · Python source

Source file

Repository

PENDING
yourusername/agt-lab-server

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 09:31 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:2f7a481f52f1fb9d2c0011e4997718b61778cdd3f0bb8a5be3ca17f60af29f53

Other collected versions

View all collected versions →