
A new Rust server stack for the ODMO 2.0 client ecosystem.
<a href="https://odmo.dev">Website</a> ·
<a href="http://discord.gg/VcNuqrW3WH">Discord</a> ·
<a href="https://github.com/Tenshimaru/OpenDigimonMastersOnline/raw/main/README.md">English</a> ·
<a href="https://github.com/Tenshimaru/OpenDigimonMastersOnline/raw/main/READMEs/README.pt-BR.md">Português</a> ·
<a href="https://github.com/Tenshimaru/OpenDigimonMastersOnline/raw/main/READMEs/README.es-ES.md">Español</a>
<img src="https://img.shields.io/badge/Rust-Workspace-orange?logo=rust" alt="Rust Workspace" />
<img src="https://img.shields.io/badge/Architecture-Multi--Service-2563eb" alt="Multi-Service" />
<img src="https://img.shields.io/badge/Persistence-JSON%20%2B%20PostgreSQL-16a34a" alt="Persistence" />
<img src="https://img.shields.io/badge/License-GPL--3.0--or--later-8b5cf6" alt="License GPL-3.0-or-later" />
ODMO is a new server implementation written in Rust for use with the 2.0 client source of this project.
The goal is to deliver a cleaner, more maintainable, and more protocol-faithful online stack while moving toward compatibility with modern client families such as GDMO, LDMO, and KDMO. That gives communities a path to receive updates and backend improvements in real time instead of staying tied to an older server shape.
The project is developed by the ODMO - Open Digimon Masters Online community and is primarily maintained by Tenshimaru.
| Area | Current status |
|---|---|
| Rust workspace | Active |
| Core crates | 4 |
| Runtime services | 3 |
| Account flow | Implemented |
| Character flow | Implemented |
| Initial game bootstrap | Implemented |
| JSON persistence | Implemented |
| PostgreSQL path | Implemented and expanding |
| Real-time service handoff | Implemented |
| Server-owned asset catalogs | Implemented |
| Character flow | Progression | Client UI |
|---|---|---|
![]() |
![]() |
![]() |
This is not just a skeleton. The workspace already contains a real three-service path:
That current stack is visible directly in the server code:
odmo-types — shared identifiers and domain value typesodmo-protocol — packet models, opcodes, packet reader, packet writer, protocol errorsodmo-application — account, character, game, and portal application flowsodmo-persistence — JSON repository, PostgreSQL repository path, migrationsodmo-account-service — login/auth bootstrapodmo-character-service — character flow and game handoffodmo-game-service — initial world bootstrapRule data that the backend must validate lives in server-owned catalogs under:
data/server-assets/evolution_assets.jsondata/server-assets/item_assets.jsondata/server-assets/item_assets.source.jsondata/server-assets/digimon_assets.jsondata/server-assets/digimon_assets.source.jsonThe client continues to read its own pack data independently. The server does not depend on the client's pack or dump files at runtime.
When a server catalog must be refreshed from modern client data, the canonical input is the current pack set and a reproducible import step. In this workspace that means extracting the live Pack03 files with DmoPackToolkit, decoding the modern BIN payloads, and then storing only the normalized server-owned result plus provenance manifests. The current refresh path derives ItemData, CoolTime, and DigimonListData from Pack03; the server never reads those pack files at runtime.
If localized item names are not recoverable from the current pack-derived payloads alone, the importer carries forward the existing server-owned names from data/server-assets/item_assets.json instead of reintroducing a runtime or refresh dependency on loose reverse XML files.
The non-canonical CSV/XML reverse helpers remain available only as explicit opt-in inputs for research or recovery work. The normal refresh path for server catalogs should start from the current Pack03 files.
Confirmed in the workspace:
PacketReaderPacketWriterEvidence: crates/odmo-protocol/src/lib.rs, crates/odmo-protocol/src/reader.rs, crates/odmo-protocol/src/writer.rs
Confirmed in the workspace:
Evidence: services/odmo-account-service/src/main.rs, crates/odmo-application/src/account.rs
Confirmed in the workspace:
Evidence: services/odmo-character-service/src/main.rs, crates/odmo-application/src/character.rs
Confirmed in the workspace:
Evidence: services/odmo-game-service/src/main.rs, crates/odmo-application/src/game.rs
Confirmed in the workspace:
(map_id, channel)Evidence: crates/odmo-application/src/lib.rs
Confirmed in the workspace:
ODMO_DATABASE_URL for PostgreSQLODMO_DEV_MODE=1 for JSON-backed development modeEvidence: crates/odmo-persistence/src/lib.rs, crates/odmo-application/src/character.rs, crates/odmo-application/src/game.rs
Important gaps still remaining:
Current maturity, without overstating what is finished:
| Area | Current state |
|---|---|
| Account login and authentication | Implemented |
| Character list, creation, deletion, selection | Implemented |
| Account -> character -> game service handoff | Implemented |
| Initial world bootstrap packets | Implemented |
| Shared online state and player visibility base | Implemented first stage |
| Repository-backed server state | Implemented first stage |
| PostgreSQL-backed runtime path | Implemented, still expanding |
| Full world simulation | Partial |
| Inventory/gameplay depth | Partial |
| Combat, skills, AI, advanced systems | Early |
| Broader admin/support tooling | Not implemented yet |
| Automated compatibility coverage | Planned |
Near term
Mid term
Long term
cargo build
$env:ODMO_PORTAL_STATE_DIR = ".odmo-portal"
$env:ODMO_DEV_MODE = "1"
$env:ODMO_REPOSITORY_PATH = ".odmo-data\world.json"
cargo run -p odmo-account-service
cargo run -p odmo-character-service
cargo run -p odmo-game-service
$env:ODMO_DATABASE_URL = "postgres://<db-user>:<db-password>@<db-host>:5432/<db-name>"
cargo run -p odmo-account-service
cargo run -p odmo-character-service
cargo run -p odmo-game-service
When ODMO_DATABASE_URL is set, the services run the bundled SQL migrations and prepare the server-owned runtime catalogs automatically at startup. Demo data is opt-in via ODMO_SEED_DEMO=1.
crates/
odmo-types/
odmo-protocol/
odmo-application/
odmo-persistence/
services/
odmo-account-service/
odmo-character-service/
odmo-game-service/
READMEs/
tests/
This project is licensed under GPL-3.0-or-later, as declared in Cargo.toml and LICENSE.txt.
$ claude mcp add OpenDigimonMastersOnline \
-- python -m otcore.mcp_server <graph>