phantom
Documentation menu

Introduction

phantom is a Matrix homeserver written in Rust, with a terminal admin console written in Go. The server speaks the Matrix client-server API and an admin API of its own; the console uses both, so any account can chat from it and an admin can see and run the whole server.

Signing in to the phantom console and walking its sections
Signing in, then the overview, users, rooms, services and logs.

phantom is early. Local accounts can register, chat, sync and be managed from the console or the admin room, and phantom servers federate with each other, but it hasn't been tried against other implementations. Read status & limits before running it anywhere that matters.

What you get

  • A homeserver — registration, login, rooms, messages, sync, media, push and the rest of the client-server API, on a RocksDB database.
  • An admin console — fifteen sections, from chat to abuse reports, all live against the server once you sign in as an admin.
  • An admin API — /_phantom/admin/v1, JSON behind an admin's access token. The console is just one client of it.
  • Actions — set passwords, grant and revoke admin, deactivate accounts, sign devices out, create and revoke registration tokens, ban, shut down and purge rooms, delete media, dismiss reports, reload the config and back up.

How it is built

PartWhat it does
phantom-coreconfiguration, errors, logging, Matrix event types and state resolution
phantom-databasethe RocksDB engine, typed tables, codecs and a read pool
phantom-servicethe service runtime and the ~55 services on it
phantom-apithe client-server, federation, OIDC and admin HTTP routes
phantom-macrosproc macros, including the config-example generator
phantom-serverthe server binary
cli/the phantom console, built on Bubble Tea

phantom began as a port of conduwuit and still tracks it.

Ready? Head to installation.