NewImport from Wanderer, intel included

The chain map your whole corp edits live.On a server you run.

Built to replace Wanderer, and it imports from it. Scan, map, fight and plan capital jumps in one app next to the client. Every change reaches everyone looking at the map the moment it is made.

BetaHosted and usable today. We are fixing and polishing from pilots’ reports: Help, Report a problem in the app, or an issue on GitHub.

One app next to the client

Runs as
One Docker container, one port
Database
SQLite, or Postgres
Sign-in
EVE Online, or Discord
Data
ESI, zKillboard, EVE-Scout

K162 Built for wormhole life

Scan it. Map it. Fight it.
Move the capitals through it.

  1. 01Scan
  2. 02Map
  3. 03Fight
  4. 04Move capitals
  5. 05Alliance

01 Scan

Paste the scanner, read the hole.

Copy the probe scanner, press Ctrl+V anywhere on the map, and the results land in the selected system. A toast says what changed, “3 new / 1 updated”. A paste never downgrades a signature someone already scanned further.

Scan colours
As the client draws them: red under 25 %, orange to 75 %, yellow to 100 %, green when you can warp.
Wormholes
Identified holes in their own blue-violet, with a bar on the row.
Leads to
Link a signature to its connection; the bookmark code shows above the system.
Expiry
Signatures go 24 h after they were added (a switch per map). Untouched ones also go after 14 days, or what the map sets.
The Signatures widget: nine signatures, one unscanned in red, four wormholes in blue-violet with their types, K162 and U210 with lifetime marks, and sites in green.
The Wormhole types dialog: 102 types with where they spawn, lifetime, total mass, mass per jump, size and respawn.
Wormhole types. All 102, K162 included: where they spawn, lifetime, total and per-jump mass, the biggest hull that fits, static or wandering. Press W, or click any type code on the map.

02 Map

Everyone edits the same chain.
Nobody waits for a refresh.

Live
Every change is streamed to everyone on the map, and to Discord.
Cursors
Another pilot’s cursor shows only while they move, link, edit or paste, with their name and what they are doing. 2.5 s later it fades. Moving the mouse shows nothing.
Automapping
The server reads tracked characters from ESI every 5 s. A jump adds the system and the connection, browser open or not.
Undo
Ctrl+Z takes back your last 20 changes. The map’s history lists who changed what, reverts it, exports CSV or JSON.
Views
Lay the widgets out per job. Scan, PvP and Roll ship as views 1, 2 and 3; managers publish a view as the map’s default.
Statics
On the node with where they lead, D845 HS. Effects as a dot: Pulsar, Wolf-Rayet, Magnetar, Black Hole, Red Giant, Cataclysmic Variable.
Bookmarks
Numbering kept on the server so everyone sees the same codes. Click to copy.
Keys
F fit chain, C centre on me, L legend, W wormhole types.
The demo chain in Darkbeacon: a C3 home hole linked to a C2, a C5 Pulsar flagged hostile, a null-sec system, a high-sec exit and a low-sec exit. On the right, the System info, Signatures and Routes widgets for the home system.

The screenshot scrolls sideways.

  1. Home. Class pill, statics with where they lead (D845 HS, U210 LS), the effect as a dot.
  2. End of life. Time is the outer colour of a connection: purple at EOL, pink under an hour.
  3. Critical mass, flagged dangerous. Mass is the core colour, danger a red halo.
  4. Reduced mass: an amber core on a neutral line.
  5. Frigate hole. Size is a letter on the line, never its width.
  6. Bubbled on the EC-P8R side.
  7. Exits name the nearest trade hub and the jumps to it.
  8. Signatures in the probe scanner’s colours; identified wormholes in their own blue.
  9. Routes to every trade hub, one square per system in its security colour.
  10. Who is on the map, then views 1, 2, 3: Scan, PvP, Roll. Alt+1 to Alt+3.

Colours mean what they mean in game

Security, exactly as the client draws it:

  1. 1.0
  2. 0.9
  3. 0.8
  4. 0.7
  5. 0.6
  6. 0.5
  7. 0.4
  8. 0.3
  9. 0.2
  10. 0.1
  11. 0.0

Standings toward who holds the space, as the client tags them:

  • +10
  • +5
  • −5
  • −10

One line per connection, read by colour:

  • Fresh
  • End of life
  • Under an hour
  • Reduced mass
  • Critical mass
  • Dangerous
  • Bubbled
  • SFrigate size
The Routes widget: Jita and Rens 4 jumps, Dodixie 8, Amarr and Hek 9, each route drawn as squares in the security colour of every system on it.

Routes from the chain

Jita, Amarr, Dodixie, Rens and Hek on every map, up to 20 hubs, your own on top. Thera and Turnur holes come from EVE-Scout every five minutes. Shortest, safer, high-sec only or outlaw; skip EOL, critical, frigate or bubbled holes. Set the destination in game for any character whose grant allows it.

The Edit system dialog for J014348: custom and temporary names, status Home, Labels WH1 to WH3, a preview of the chips above the node, Tags, Markdown notes and the position lock.
Edit system. Double-click a node. Every change saves as you make it.

03 Fight

Know who is in the chain
before you undock.

Kills
Killmails from zKillboard, live, on the node and in the Kills widget: this system or the whole map, the last 4, 12 or 24 hours. A new kill rings the node once.
Activity
Kills, NPC kills and jumps for the last hour and day from ESI, the busiest hours, and who kills there most over 7 days.
Sovereignty
Who holds a null-sec system, as a ticker under the node, in the game’s colour of your standing toward them.
Local
Your tracked pilots in the system, with their ships, yours first.
Structures
Paste them from the client: type, owner, status and timer.
Comments
A thread per system. “Rolling the D845 after downtime.”
The PvP view: the chain, and for the home hole System info, Local with two tracked pilots in a Loki and a Sabre, Kills across every system on the map in the last 4 hours, and Comments.
The PvP view, one keypress away: Alt+2. Kills here are set to every system on the map.

04 Move capitals

Plan the jumps
on a map of known space.

The jump planner: a Thanatos from Amamake to 1DQ1-A, 8 jumps and 45.97 light years drawn over a top-down map of known space in security colours, with fuel, fatigue and waiting per leg.
Hulls
Jump freighters, black ops, Rorqual, carriers, dreads, lancers, FAX, supers and titans.
Skills
Jump Drive Calibration, Jump Fuel Conservation and Jump Freighters set range and fuel.
Fatigue
Fatigue and waiting per leg; keep it under a limit you pick.
Options
Finish over stargates, stop at NPC stations, outlaw, avoid systems, Ansiblex bridges.
Out
Set the waypoints in game, or copy the route for fleet chat.
Copy route
Thanatos: Amamake > 1DQ1-A (8 jumps, 45.97 ly, 82,754 oxygen isotopes)
1. Jump 5.41 ly to Fasse (0.4, Sinq Laison), cyno, 9,744 fuel
2. Jump 5.14 ly to Ahbazon (0.4, Genesis), cyno, 9,259 fuel
3. Jump 6.80 ly to Noranim (0.3, Genesis), cyno, 12,249 fuel
…
8. Jump 6.09 ly to 1DQ1-A (-0.4, Delve), cyno, 10,971 fuel
Fatigue at the end: 5 h

05 Run it for your alliance

One chain per corp.
One map for the alliance.

  • Shared chains

    Corps keep their own maps and share them, read or read-write, with the other side’s admin agreeing. An alliance map merges the shared chains field by field and shows where each system came from.

  • Access

    Rules by character, corporation, alliance, Discord role or account. One account holds every character of a pilot. Roles are checked again every minute.

  • Discord

    New connections, EOL, danger, kills in the chain, pings, the way home and arrivals, over a webhook or the bot, with role mentions and quiet hours.

  • API keys

    Personal tokens and service keys, scoped per resource and action, on one map or all, with expiry, IP allow-list, rate limit and a read-only switch.

  • OpenAPI and MCP

    REST under /api/v1, described at /api/openapi.json. An MCP endpoint at /mcp lets an assistant read the chain and find the way out; off until an admin turns it on.

  • Public maps and webhooks

    A read-only live view at /p/<token> that shows only what you choose. Webhooks signed with HMAC, each delivery logged.

  • Audit

    Every change with who, which character and from where, kept in a hash-chained log with an integrity check.

  • Support hub

    Report a problem from the help menu. A ticket belongs to the EVE character you pick and lists every detail it sends before you send it.

K162 Coming from Wanderer

Bring the chain with you, intel included.

All maps, Import from Wanderer. Point it at wanderer.ltd or your own Wanderer with the map’s API key, upload the file Wanderer exports, or, as an instance admin, read your own Wanderer’s database read-only. Read the preview, then import into a new map or merge into one you use.

  • Systems, connections in every state, signatures, structures, comments, labels, tags and access lists.
  • Hidden systems come over hidden, with their notes, signatures and structures, back when the system is.
  • The preview says what comes over as it is, what comes over close to it, and what is left out and why.
  • Keep syncing from Wanderer every 5 to 60 minutes while the corp moves over.
Import from Wanderer: choose Wanderer’s API, an export file or Wanderer’s database, then the address, the map and its API key.

What is different, and what is not

We flew our own fork of Wanderer before we built Darkbeacon, and it shaped a lot of what is here. Wanderer is a good mapper; this is an honest list of where the two differ, checked against both codebases.

TopicWandererDarkbeacon
Running itAn Elixir/Phoenix app on Postgres. Routes come from a separate route-builder service, kills from the separate wanderer-kills service, Discord from a separate notifier bot.One container (a NestJS server and the Next.js web app) on SQLite, or Postgres. Routing, kills and Discord run inside it.
Scaling outErlang clustering.Optional cluster mode on Postgres: a leader by advisory lock, events over NOTIFY.
TrackingOn the server, while someone has the map open; it stops 30 minutes after the last browser leaves.On the server, every 5 seconds, with every browser closed.
HistoryA user activity log, archived after about 12 weeks; undo in the browser.Every change in an event log, so a reconnect replays what it missed. A hash-chained audit with field diffs; revert any single change; Ctrl+Z undone on the server.
AlliancesAccess lists shared between maps.Chains shared map to map, read or read-write, by scope: topology, connection status, signatures, intel, characters, labels. An alliance map merges them field by field.
APIA key per map, OpenAPI, an event stream, signed webhooks.Personal and service keys scoped per resource and action, with expiry, IP allow-list and rate limit. OpenAPI and AsyncAPI, signed webhooks, an MCP endpoint, public read-only links.
ExtendingNo plugin system.A plugin SDK on the core’s ports. Discord notifications ship as a plugin; themes restyle the map.
CapitalsA link to Dotlan’s jump planner.A jump planner in the app, on a map of known space, with fuel, fatigue and waiting per leg.
ViewsNo saved views.Saved views on Alt+1 to 3; managers publish the map’s defaults.
BackupsBack up Postgres yourself.On SQLite, daily backups kept in the volume, restored from Admin.
Wormhole types, Thera and Turnur, standingsA wormhole types reference, EVE-Scout routes, sovereignty in standings colours.The same three.

Does not come over

  • Tracked characters and settings: pilots sign in and link their characters again.
  • Kills: Darkbeacon reads them live from zKillboard.
  • Wanderer subscriptions and licences.

Tools that talk to Wanderer

A read-only Wanderer-compatible API answers the usual /api/map/systems,/api/map/connections and character calls, plus the map event stream with Wanderer’s event names, so existing scripts keep reading while the corp moves over.

HS Self-host

One container.
Your data stays on your box.

compose.yaml
services:
  darkbeacon:
    build: .
    restart: unless-stopped
    env_file: .env
    ports:
      - '3000:3000'
    volumes:
      - dbk-data:/data

volumes:
  dbk-data:
then
git clone https://github.com/zanreal-labs/darkbeacon.git && cd darkbeacon
cp .env.example .env
docker compose up -d
Setup
Set PUBLIC_URL and an EVE application in .env; that is all it needs. The first account to sign in owns the instance.
Volume
/data holds the SQLite database, backups and the secret key.
Database
SQLite in the volume by default; set DATABASE_URL for Postgres.
Scale out
On Postgres, CLUSTER=postgres runs several replicas: one leads by advisory lock, events cross over NOTIFY.
Backups
On SQLite, daily by default, the 14 newest kept. Restore from Admin, Backups, or the command line.
Size
One container holds a whole alliance: thousands of accounts, 600 characters tracked online, 400 people connected.
Metrics
OpenTelemetry traces, metrics and logs once an OTLP endpoint is set; Prometheus at /metrics.
Telemetry
Anonymous usage counts from production builds, never names or systems. TELEMETRY=off stops it.
App
Installs from the browser and runs in its own window next to the client.

RM Roadmap

Finished, then next.

We work on one thing at a time and finish it before we take the next. So this is an order, not a calendar: what is done, what we are on, and what comes after it.

  1. Done

    Everything a Wanderer chain needs

    Version 0.1.0: the live map, scanning, kills and sovereignty, routes, the jump planner, sharing between maps, the API and the import from Wanderer.

  2. In progress

    Beta: stability and polish

    The hosted instance is open. We fix and polish from what pilots report through Help, Report a problem in the app.

  3. Next

    1.0

    A stable release, and a published Docker image, so self-hosting starts with a pull instead of a build.

  4. Later

    Plugins marketplace

    Selected community plugins, installable from the app, starting with a few of ours such as Discord notifications.

  5. Later

    Exploring: maps shared between instances

    Sharing a chain with an alliance member on another Darkbeacon. The API already reserves its scopes.

SRC Open source

Read every line.

Server, web app, plugin SDK and themes are on GitHub. Plugins add widgets and Discord notifiers; themes restyle the map. Bug reports and pull requests are welcome.

zanreal-labs/darkbeacon

ISK Support the project

Built in spare time, for everyone in J-space.

If it saves your fleet a few jumps, you can send ISK in game. It buys no features and no priority; every instance works the same either way.

How to sponsor

Light the beacon.

Open the hosted instance, or run your own.