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>
47 lines
1.5 KiB
Markdown
47 lines
1.5 KiB
Markdown
# 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](https://www.wireshark.org) installed **with the bundled Npcap driver** (the agent uses `tshark` to 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`):
|
|
|
|
```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.
|