Getting Started

Module Reference

This reference lists the main Forge modules and where each layer lives.

Module Reference

This reference lists the main Forge modules and where each layer lives.

Directory Map

arma/client/addons/      Client-side Arma addons and browser UIs
arma/server/addons/      Server-side Arma addons and extension bridge
arma/server/extension/   Rust arma-rs extension and SurrealDB adapters
bin/icom/                Interprocess communication helper
lib/models/              Shared domain data models
lib/repositories/        Repository traits and in-memory stores
lib/services/            Domain services and workflow logic
lib/shared/              Cross-crate helpers
tools/                   Web UI build tooling
docs/                    Framework-level documentation

Gameplay Domains

DomainPurposeClient addonServer addonService/model layerExtension group
ActorPlayer identity, loadout, position, status, contact identifiers, and persistent character data.arma/client/addons/actorarma/server/addons/actorlib/models/src/actor.rs, lib/services/src/actor.rsactor:*
BankPlayer accounts, cash/bank balances, PIN validation, transfers, checkout charging, and transaction context.arma/client/addons/bankarma/server/addons/banklib/models/src/bank.rs, lib/services/src/bank.rsbank:*, bank:hot:*
CADDispatch requests, assignments, orders, activity stream, profiles, groups, and hydrated dispatcher views.arma/client/addons/cadarma/server/addons/cadlib/models/src/cad.rs, lib/services/src/cad.rscad:*
GaragePlayer vehicle storage with plate IDs, fuel, damage, and hit point state.arma/client/addons/garagearma/server/addons/garagelib/models/src/garage.rs, lib/services/src/garage.rsgarage:*, garage:hot:*
LockerPlayer item storage keyed by classname with category and amount.arma/client/addons/lockerarma/server/addons/lockerlib/models/src/locker.rs, lib/services/src/locker.rslocker:*, locker:hot:*
OrganizationPlayer organizations, membership, treasury, credit lines, shared assets, and fleet data.arma/client/addons/orgarma/server/addons/orglib/models/src/org.rs, lib/services/src/org.rsorg:*, org:hot:*
PhoneContacts, messages, and email state.arma/client/addons/phonearma/server/addons/phonelib/models/src/phone.rs, lib/services/src/phone.rsphone:*
StoreStorefront entity setup, catalog hydration, checkout workflows, and checkout charging integration.arma/client/addons/storearma/server/addons/storelib/models/src/store.rs, lib/services/src/store.rsstore:checkout
TaskServer-owned mission/task flows, catalog, ownership, status, participant tracking, rewards, and defuse counters.nonearma/server/addons/tasklib/models/src/task.rs, lib/services/src/task.rstask:*
Owned GarageOrganization or owner-scoped vehicle unlock storage.via garage/org UIserver extension onlylib/models/src/v_garage.rs, lib/services/src/v_garage.rsowned:garage:*
Owned LockerOrganization or owner-scoped arsenal unlock storage.via locker/org UIserver extension onlylib/models/src/v_locker.rs, lib/services/src/v_locker.rsowned:locker:*

Server and extension guides: Actor, Bank, CAD, Economy, Garage, Locker, Organization, Owned Storage, Phone, Store, Task.

Client guides: Client Overview, Main, Common, Actor, Bank, CAD, Garage, Locker, Notifications, Organization, Phone, Store.

Infrastructure Modules

ModulePurposeLocation
commonShared SQF helpers, base stores, utility functions, and shared UI bridge pieces.arma/client/addons/common, arma/server/addons/common
extensionServer SQF bridge around forge_server extension calls and chunked transport.arma/server/addons/extension
mainMod-level configuration, pre-init wiring, and server/client startup glue.arma/client/addons/main, arma/server/addons/main
economyServer-side fuel, medical, and service economy helpers. Fuel and repair charge organization hot state; medical charges player bank/cash first, then organization funds with repayable member debt when personal funds cannot cover the bill.arma/server/addons/economy
notificationsClient notification UI, sounds, and UI event handling.arma/client/addons/notifications
icomRust helper for interprocess communication and event broadcasting.bin/icom, arma/server/extension/src/icom.rs
terrainExtension-side terrain export helper.arma/server/extension/src/terrain.rs
transportChunked request/response handling for large extension payloads.arma/server/extension/src/transport.rs
surrealSurrealDB connection lifecycle and status reporting.arma/server/extension/src/surreal.rs

Extension Command Groups

Commands are invoked with:

"forge_server" callExtension ["group:command", [_arg1, _arg2]];

Nested groups use additional : separators, for example bank:hot:deposit.

Core

CommandPurpose
versionReturn the extension version string.
statusReturn SurrealDB connection state.
surreal:statusReturn SurrealDB connection state directly from the Surreal module.

Actor

CommandPurpose
actor:getFetch actor data for a resolved player UID.
actor:createCreate actor data from JSON.
actor:updateApply actor JSON updates.
actor:existsReturn true or false.
actor:deleteDelete actor data.
actor:hot:init, actor:hot:get, actor:hot:keys, actor:hot:override, actor:hot:save, actor:hot:removeManage actor hot state.

See Actor Usage Guide for examples.

Bank

CommandPurpose
bank:get, bank:create, bank:update, bank:exists, bank:deleteDurable bank CRUD.
bank:hot:init, bank:hot:get, bank:hot:override, bank:hot:patch, bank:hot:save, bank:hot:removeManage bank hot state.
bank:hot:deposit, bank:hot:withdraw, bank:hot:deposit_earnings, bank:hot:transferMutate hot bank balances with operation context.
bank:hot:charge_checkoutCharge a checkout against hot bank state.
bank:hot:validate_pinValidate a PIN for bank operations.

See Bank Usage Guide for examples.

Garage

CommandPurpose
garage:create, garage:get, garage:add, garage:update, garage:patch, garage:remove, garage:delete, garage:existsDurable player garage operations.
garage:hot:init, garage:hot:get, garage:hot:override, garage:hot:add, garage:hot:remove_vehicle, garage:hot:save, garage:hot:removeManage player garage hot state.

See Garage Usage Guide for examples.

Locker

CommandPurpose
locker:create, locker:get, locker:add, locker:update, locker:patch, locker:remove, locker:delete, locker:existsDurable player locker operations.
locker:hot:init, locker:hot:get, locker:hot:override, locker:hot:save, locker:hot:removeManage player locker hot state.

See Locker Usage Guide for examples.

Organization

CommandPurpose
org:get, org:create, org:update, org:exists, org:deleteDurable organization CRUD.
org:assets:get, org:assets:updateManage organization assets.
org:fleet:get, org:fleet:updateManage organization fleet entries.
org:members:get, org:members:add, org:members:removeManage organization membership.
org:hot:*Runtime organization workflows including registration, invites, credit lines, checkout charging, assets, fleet, leave, disband, save, and remove.

See Org Usage Guide for examples.

Phone

CommandPurpose
phone:initInitialize phone state for a UID.
phone:contacts:list, phone:contacts:add, phone:contacts:removeManage contacts.
phone:messages:list, phone:messages:thread, phone:messages:send, phone:messages:mark_read, phone:messages:deleteManage messages.
phone:emails:list, phone:emails:send, phone:emails:mark_read, phone:emails:deleteManage emails.
phone:removeRemove phone state for a UID.

See Phone Usage Guide for examples.

CAD

Command GroupPurpose
cad:activity:append, cad:activity:recentAppend and read recent activity.
cad:assignments:list, cad:assignments:assign, cad:assignments:acknowledge, cad:assignments:decline, cad:assignments:upsert, cad:assignments:deleteManage dispatch assignments.
cad:orders:list, cad:orders:create, cad:orders:create_from_context, cad:orders:close, cad:orders:upsert, cad:orders:deleteManage orders.
cad:requests:list, cad:requests:submit, cad:requests:submit_from_context, cad:requests:close, cad:requests:upsert, cad:requests:deleteManage requests.
cad:profiles:list, cad:profiles:update_from_context, cad:profiles:upsert, cad:profiles:deleteManage profiles.
cad:groups:buildBuild grouped CAD state.
cad:view:hydrateBuild the dispatcher view model.

See CAD Usage Guide for examples.

Task

Command GroupPurpose
task:resetReset task state.
task:catalog:active, task:catalog:get, task:catalog:upsert, task:catalog:deleteManage task catalog entries.
task:ownership:bind, task:ownership:release, task:ownership:accept, task:ownership:reward_contextManage task ownership and rewards.
task:status:set, task:status:get, task:status:clearManage task status.
task:defuse:increment, task:defuse:getManage defuse counters.
task:clearClear task state.

See Task Usage Guide for examples.

Owned Storage

Command GroupPurpose
owned:garage:create, owned:garage:fetch, owned:garage:get, owned:garage:add, owned:garage:remove, owned:garage:delete, owned:garage:existsOwner-scoped vehicle storage.
owned:garage:hot:*Owner-scoped vehicle hot state.
owned:locker:create, owned:locker:fetch, owned:locker:get, owned:locker:add, owned:locker:remove, owned:locker:delete, owned:locker:existsOwner-scoped item storage.
owned:locker:hot:*Owner-scoped item hot state.

See Owned Storage Usage Guide for examples.

Other Extension Groups

Command GroupPurpose
store:checkoutRun store checkout behavior.
icom:connect, icom:broadcast, icom:send_eventICom connection and event forwarding.
terrain:exportSVGExport terrain data as SVG.
transport:invoke, transport:invoke_storedInvoke commands through transport.
transport:request:append, transport:request:clearManage stored request chunks.
transport:response:get, transport:response:clearManage stored response chunks.

Rust Crates

CrateRole
forge-modelsDomain models and validation. Keep these serializable and free of persistence details.
forge-repositoriesRepository traits and in-memory implementations. Keep these storage-agnostic.
forge-servicesBusiness rules and workflows. Depend on repository traits, not concrete databases.
forge-sharedCross-crate helpers. Keep dependencies light.
forge-serverArma extension crate. Owns command registration, SurrealDB runtime wiring, and concrete storage adapters.
forge-icomICom helper binary and client library.
Copyright © 2026