|
All checks were successful
Deploy / deploy (push) Successful in 3m58s
- Extract world-parse + packet capture into @albion/shared (reused by server and a new standalone agent workspace). - Migrate the data layer from SQLite/better-sqlite3 to shared Postgres (async pg with a ?->$n helper; economy engine preloads the item/recipe graph so its sync recursion still works). - API-key auth (ALBION_API_KEY) on all /api routes except health; web UI sends it via a fetch wrapper + key-entry gate; server serves the built UI with a path-traversal-safe static handler (drops @fastify/static). - Windows companion agent: pushes world map + captured market orders to /api/ingest/*; runs on the gaming PC where the game traffic lives. - Docker + docker-compose (external proxy + backend networks for Nginx Proxy Manager and shared Postgres) and a Forgejo deploy workflow. - Validated end-to-end against Postgres 16 and a full compose run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Albion Companion Agent
Runs on your gaming PC. Reads game-local data a deployed server can't see and pushes it to your server:
- World map — parsed from the game's
world.bin(read-only), uploaded once. - Market orders — passively captured while you play; every marketplace you open records firsthand prices.
Read-only observation only — the SBI-tolerated technique (same as the Albion Data Project client). No memory reading, no injection, no automation.
Requirements
- Wireshark installed with the bundled Npcap driver (the agent uses
tsharkto capture your own traffic). - Node.js 20+.
Setup
npm install # from the repo root (installs all workspaces)
npm run agent -- init # writes a config file, prints its path
Edit the config file (%APPDATA%\albion-agent\config.json):
{
"serverUrl": "https://albion.yourdomain.com",
"apiKey": "the-same-key-as-ALBION_API_KEY-on-the-server",
"gamePath": "E:\\albion",
"interfaces": [],
"orderFlushSeconds": 15
}
interfaces: [] captures on all adapters. To narrow it down:
npm run agent -- interfaces
Run
npm run agent # uploads world map, then streams market orders (Ctrl+C to stop)
npm run agent -- world # just upload the world map and exit
Only run it while you play — that's when the data exists. Everything else (prices from the community API, calculations, alerts, the web UI) lives on the server and runs 24/7 without this.