UO Tavern Britannia
AnimaULTIMA ONLINE CLIENT
THE ANIMA ARCHITECTURE

A world to observe.
A way to act.

Build an Ultima Online AI player around game state. Anima handles the protocol, world model, and pathfinding.

The core is the starting point.

anima-core is a headless Rust game core with no rendering, audio, or user interface. A sans-IO protocol layer processes bytes without owning a socket. Native and browser transports sit outside it.

Desktop players, the WebAssembly browser client, and AI agents all use this core. Your brain can change without replacing the game interface.

World state↓ ObservationYour agent↓ ActionAnima core → UO server

Structured observations. Explicit actions.

The versioned JSON adapter carries player state, nearby mobiles and items, journal updates, and targeting or dialog prompts. Actions include movement, attacking, casting, speaking, targeting, and inventory or dialog interactions.

Use the native NDJSON bridge for an external process, or the Rust brain interface in the workspace. A* pathfinding is part of the core’s game interface.

Choose a brain.

The small Rust brains under crates/anima-agent belong to this client workspace; the Python anima-agent repository is a separate project.

Start with the working interface.

Clone the repository, use its pinned Rust toolchain, and follow Build & run for the external NDJSON bridge. You need UO data, a server account, and a shard that permits automation.

The design document explains the contract, transport boundaries, and decision history. The compatibility record distinguishes implemented behavior from live verification.

Explore the Rust workspace