albion/agent/README.md
Заид Омар Медхат 337dac78ba
All checks were successful
Deploy / deploy (push) Successful in 3m58s
Client/server split, Postgres, auth, Windows agent, Docker deploy
- 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>
2026-08-23 04:10:08 +05:00

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.