Overview
CityHall is the distributed server for Agent of Empires (AoE).
Where AoE normally runs as an isolated local instance per person, CityHall is a self-hostable backend that a team can point multiple AoE clients at, so accounts and shared state live in one place instead of on each machine. It ships as a single Rust binary that serves both the JSON API and the React web frontend, and the same binary doubles as an administrative CLI.
What it does today
This first release focuses on user management, the foundation the rest of the control plane builds on:
- User accounts: create, list, edit, delete (API, web UI, and CLI).
- Cookie-based authentication with server-side sessions.
- A seeded
adminaccount on first launch, with a random password that must be changed on first login.
How it fits together
- Backend (
api/): axum + SeaORM. Serves the API under/apiand the built frontend for everything else. - Frontend (
web/): React + Vite + TypeScript + Tailwind, styled to match the AoE web dashboard. - Database: any relational database SeaORM supports (SQLite, Postgres, MySQL), chosen at runtime so CityHall drops into a Docker, Compose, or Kubernetes stack without code changes.
Next steps
- Quick start: run it and sign in.
- Workspaces: per-user aoe instances spawned and proxied by CityHall.
- Configuration: database, bind address, logging, and email.
- Deployment: Docker, Compose, Kubernetes, VPS, HTTPS, and databases.
- CLI reference: manage users from the terminal.
- API reference: the HTTP endpoints.
- Development: build, test, and extend CityHall.