Documentation

Getting started

EVE Together is a local-first desktop companion for EVE Online. It runs fully on your own machine — managing fits, fleets, compositions, skills and an internal killboard — with an optional self-hosted server when you want to fly as a group.

There are two ways to run it:

  • Solo / local-only — just the desktop client. Every character authenticates locally, tokens stay on your disk, nothing is shared.
  • Together — one person in your group hosts a server (Docker). Characters you mark as synced couple to it; everything else stays local.
You never need our infrastructure. There is no EVE Together cloud — the only central component is a single update-check URL.

Installation

Desktop client

Download the client for your platform, unzip, and run. On first launch it builds a local SDE store from CCP's published data and creates an empty local database.

# Windows / macOS / Linux (Avalonia)
1. Download the latest client build
2. Run EveTogether
3. Add a character -> choose Local or Synced
4. Grant the ESI scopes the features you want require

Self-hosted server (optional)

docker compose up -d        # bring up the server + database
# then in the client:
#   Settings → Servers → Couple server → enter host + pairing secret
The server is only needed for "together" features (fleet sync, shared compositions, server-side killboard). Solo play needs nothing but the client.

Core concepts

ConceptWhat it is
CharacterAn EVE pilot you've added. Each carries its own auth mode (local/synced) and ESI scopes.
FitA ship fitting, imported or authored, validated against the SDE.
CompositionA doctrine: roles with per-role minimums and the fits approved for each.
FleetA live or forming group. Members pick comp-scoped fits; doctrine compliance is tracked.
ModuleA vertical feature slice (Fits, Fleet, Comp, ESI…) docked in the module shell.

Architecture

EVE Together is three pieces over one shared foundation:

  • Desktop client — Avalonia (C#/MVVM), local SQLite, its own ESI connector with a file cache, and a read-only SDE store. Runs autonomously.
  • Self-hosted server — optional, Docker, multi-provider database, with a Blazor admin panel. Handles fleet sync and relay.
  • Shared — common entities, CQRS contracts, gRPC contracts and the Modules/ vertical slices.

The technical foundation: CQRS with modules (no DDD), gRPC (call + streaming), a two-level event bus, IDbContextFactory, and a capability-based permission gate. Crucially, the identity and permission seams ship in v1 — so adding "together" later is additive, not a rewrite.

Design goal D-59: do things together in EVE, share data with each other, and keep a playground for new ideas. Built first for two pilots; corps and others later are a bonus.

Auth & security

Authentication is per character, with two flows you toggle individually:

  • Local — the client runs the EVE SSO PKCE flow itself over a loopback redirect; the token lives on your machine.
  • Synced — the character is paired to your server (pairing id + secret + state); the server holds the token. The token lives where the character belongs.
  • Refresh tokens are encrypted at rest.
  • Scope-gating: a feature only works if you've granted the matching ESI scope — otherwise it's disabled with a clear message, never failing silently.
  • TLS tiers: self-signed + trust-on-first-use for a quick start, or Caddy + Let's Encrypt for a public server.

ESI & data

EVE Together aims to be a polite ESI citizen:

  • Honour Expires caching headers; sensible fallbacks; cache immutable data effectively forever, with jitter.
  • Conservative retries, rate-limits respected (per-character and per-IP).
  • A pinned X-Compatibility-Date and a descriptive User-Agent with contact info.

Data minimisation is a hard rule — the app persists as little as possible and prefers an ephemeral cache over a data warehouse.

The SDE store

EVE's Static Data Export (the game's reference data) is built locally into a dedicated, read-only, memory-mapped SQLite store from the official JSONL. It's separate from your live database, rebuilt with an atomic swap when CCP publishes updates.

latest.jsonl  →  build  →  sde.sqlite (read-only)  →  atomic swap

FAQ

Do you store my data on a server?

No. There is no EVE Together cloud. The client is fully local; any server is one you (or your group) host.

Is it affiliated with CCP?

No. It's a third-party tool that uses CCP's official ESI API, and is not endorsed by or affiliated with CCP hf.

Does it copy EVE Workbench or zKillboard?

No code is copied. EVE Workbench is used only as a visual/behavioural reference; the implementation is entirely our own.

What does it cost?

It's open source under the MIT license.

Contributing

EVE Together is open source as a trust requirement — so anyone can verify exactly what is stored and what is sent over the wire. Contribution guidelines, the issue tracker and build instructions will be published alongside the public source release.

This documentation is a living draft — sections will be filled out as the build progresses. Spotted something to add? That's exactly what this page is for.

Material related to EVE-Online is used with limited permission of CCP Games hf by using official Toolkit. No official affiliation or endorsement by CCP Games hf is stated or implied. © 2026 RaymondKrah & Jithran — licensed under the GNU AGPLv3.