Ekaii-themed Minecraft launcher (fork of Moulberry/PandoraLauncher)
  • Rust 98.9%
  • Shell 1%
Find a file
Claude 86b133c074
Some checks failed
release / build (./scripts/build_linux.sh, false, Linux-x86_64, ubuntu-latest, x86_64-unknown-linux-gnu, x86_64-unknown-linux-gnu) (push) Failing after 1m6s
release / build (./scripts/build_linux.sh, true, Linux-aarch64, ubuntu-latest, aarch64-unknown-linux-gnu, aarch64-unknown-linux-gnu) (push) Failing after 1m43s
release / build (./scripts/build_mac.sh, false, macOS-universal, mac-arm64, , aarch64-apple-darwin,x86_64-apple-darwin) (push) Has been cancelled
release / build (./scripts/build_windows.sh, false, Windows-x86_64, windows-latest, x86_64-pc-windows-msvc, x86_64-pc-windows-msvc) (push) Has been cancelled
release / build (./scripts/build_windows.sh, true, Windows-aarch64, windows-latest, aarch64-pc-windows-msvc, aarch64-pc-windows-msvc) (push) Has been cancelled
release / release (push) Has been cancelled
feat(brand): new Pandapi app icon — bracket-eyes panda (v5.8.2)
New logo: a bamboo-jade squircle (#10C48A -> #067C55) with an ink panda whose
eye patches are < > angle brackets and whose nose is a terminal cursor block,
so the face reads as a panda and quietly as <|> (an open tag awaiting input) —
fitting for an API-first automation launcher. Legible down to 16px.

Regenerated the full icon set from the master SVG: package/mac.svg + windows.svg,
mac.icns (native macOS inset, transparent corners via a rounded-rect mask),
windows.ico (16-256), and the Linux/Windows PNG icon sets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 16:57:59 +02:00
.cargo Update dependencies 2026-08-04 19:57:42 +08:00
.forgejo/workflows ci: explicit rustup target add + single-line signtool 2026-05-23 20:03:26 +02:00
.github/workflows chore: app icon (egg-only), rebrand build scripts, Forgejo release CI 2026-05-22 15:31:47 +02:00
.zed Add support for importing instances from curseforge (#309) 2026-03-19 19:22:27 +08:00
assets Merge upstream PandoraLauncher (63 commits, through 2026-08-04) 2026-08-13 17:48:42 +02:00
crates feat(branding): rename product to Pandapi with Ekaii as a theme (v5.8.0) 2026-08-14 14:46:31 +02:00
docs docs(api): PANDAPI_API_* env vars are now the preferred names (EKAII_API_* legacy aliases) 2026-08-14 14:54:06 +02:00
package feat(brand): new Pandapi app icon — bracket-eyes panda (v5.8.2) 2026-08-14 16:57:59 +02:00
patches Update dependencies 2026-08-04 19:57:42 +08:00
screenshots [skip ci] Add screenshots 2026-01-01 17:11:30 +08:00
scripts build(mac): ship the app bundle as Pandapi.app (v5.8.1) 2026-08-14 15:20:15 +02:00
vendor Merge upstream PandoraLauncher (63 commits, through 2026-08-04) 2026-08-13 17:48:42 +02:00
wrapper Add FORCE_EXTERNAL_JAVA env var 2026-01-18 11:49:00 +08:00
.gitattributes Cleanup and force line ending of generated file to be LF 2026-04-16 17:52:31 +08:00
.gitignore Remove .idea folder and add to gitignore 2026-02-26 00:52:08 +08:00
Cargo.lock build(mac): ship the app bundle as Pandapi.app (v5.8.1) 2026-08-14 15:20:15 +02:00
Cargo.toml feat(brand): new Pandapi app icon — bracket-eyes panda (v5.8.2) 2026-08-14 16:57:59 +02:00
flamegraph.sh Auth, modrinth wip, many improvements 2025-11-07 14:55:18 +08:00
LICENSE Add LICENSE 2025-11-14 23:08:41 +08:00
README.md feat(branding): rename product to Pandapi with Ekaii as a theme (v5.8.0) 2026-08-14 14:46:31 +02:00
rustfmt.toml Apply rustfmt 2025-11-12 17:59:20 +08:00
vendor.sh Copy assets instead of using symlink to avoid problems on Windows 2026-04-16 18:45:46 +08:00

Pandapi

An API-first Minecraft launcher for advanced automation.

Pandapi is a full Minecraft launcher (Rust / gpui) whose entire surface is a machine-readable control API: 110 commands over NDJSON, a replayable event stream, capability-scoped network access, and a headless mode. Anything the GUI can do (create, configure, launch and kill instances, manage accounts, install content, read logs, drive Microsoft login) a script, a CI job, or an LLM can do.

ekaii-launcher is the ekaii-branded distribution based on Pandapi. Both are a fork of Moulberry/PandoraLauncher, which provides the launcher core.

Drive it in 30 seconds

The launcher binary doubles as a CLI client (--api sends one command to the running launcher and prints the raw JSON response):

ekaii-launcher --api launcher.status
ekaii-launcher --api instances.start --api-params '{"name": "main", "wait": "running"}'
ekaii-launcher --api instances.list | jq '.data[].name'

Underneath it is plain NDJSON on a local Unix socket (named pipe on Windows), one JSON object per line:

SOCK="$HOME/Library/Application Support/EkaiiLauncher/api.sock"
echo '{"id":1,"cmd":"launcher.version"}' | nc -U "$SOCK"
{"id":1,"ok":true,"data":{"version":"5.7.1","protocol":1,"session_id":"18f3c0a1b2"}}

The API teaches itself. One call returns every command, every event type, and the security model:

ekaii-launcher --api api.describe

That is enough for a client, an SDK generator, or an LLM to learn the whole surface without reading a line of documentation.

The control API

  • 110 commands in 17 groups, NDJSON framed, pipelined by id, served by the launcher process itself.
  • Transports: Unix domain socket (macOS/Linux) and Windows named pipe, local and fully trusted; opt-in TCP for off-box clients, with a WebSocket (RFC 6455) upgrade accepted on the same port.
  • Self-describing: api.describe returns the grouped command registry, all 19 event types, and a machine-readable security block (scopes, read-only set, local-only set, denied fields, env vars, error codes).
  • Capability security for network mode: scoped bearer tokens (read, write, accounts, settings, *; write implies read), token minting is local-socket only, a path jail (EKAII_API_PATH_ALLOW) gates every path parameter, and execution-vector fields (wrapper_command, linux_wrapper, system_libraries, jvm_binary, jvm_flags) are denied over the network. There is no TLS: keep it on loopback or behind a tunnel.
  • Event stream v2: monotonic seq, a 4096-event replay ring (events.subscribe {since_seq} resumes without gaps), server-side filters, op lifecycle events, semantic game events (game.ready, game.crash, game.server_connected, game.world_loading, game.player_chat, game.stopping, game.exited), and an opt-in console tee (game.capture / game.output).
  • Orchestration: async operations with ops.wait, blocking launches with instances.start {wait}, and structured errors ({code, message, retryable}) so scripts can branch and retry without parsing message text.
  • Headless: ekaii-launcher --headless runs the backend and the API with no GUI, turning the launcher into a scriptable daemon.

Command domains cover the launcher itself, instance lifecycle and configuration (export/import, diff, manifests, snapshot/restore, sessions, screenshots, crash reports), content (search/install/sync/resolve/dev-link/bisect via Modrinth and CurseForge), accounts (offline and Microsoft login via visit_url, skins, capes), worlds (backup/restore/duplicate/delete), servers, logs (read/tail/upload), metrics, health and diagnostics, infrastructure-as-code style state export and plan, webhooks, and network/auth management.

The full command reference is deliberately not in this README. See docs/API.md and the wiki.

Network mode

Off by default. Enabled and tuned with environment variables:

Variable Meaning
PANDAPI_API_TCP Bind a TCP listener (host:port, or a bare port for 127.0.0.1:<port>)
PANDAPI_API_WS Also accept WebSocket clients on the same port
PANDAPI_API_NO_AUTH Disable auth (honored only on loopback binds)
PANDAPI_API_PATH_ALLOW Colon-separated directories network clients may reference in path parameters

Every build accepts both the PANDAPI_API_ names above and the legacy EKAII_API_ names (the PANDAPI_ name wins if both are set).

Themes and the unthemed build

The product is Pandapi; Ekaii is a theme. The default build carries the Ekaii theme (palette, community links) and keeps the Ekaii distribution's on-disk identifiers, so an existing install upgrades in place with no data loss. Build the unthemed Pandapi distribution, with its own clean Pandapi / fr.pandapi.launcher identifiers and a separate data directory, with:

cargo build --release --no-default-features          # unthemed Pandapi binary
PANDAPI_THEME=vanilla ./scripts/build_mac.sh v5.8.0  # packaged, signed macOS build

Automation and AI

Pandapi was built to be driven by machines. The combination of NDJSON framing, api.describe self-discovery, structured errors, and scoped tokens makes it directly usable by an LLM agent or an MCP server: one call to learn the surface, stable codes to branch on, a replayable event stream to observe with, and capability scopes to hand out narrow credentials.

One boundary matters for automation work: Pandapi launches and supervises the real Minecraft client. It can start and kill the game, read its console and semantic events, and manage accounts, instances, and content, but it does not speak the game protocol itself and cannot inject in-game input or chat. Headless-bot frameworks (Mineflayer, SoulFire, Minecraft Console Client, ZenithProxy) do speak the protocol. The ecosystem thesis is that Pandapi is the orchestration, identity, and observability hub, and the bot frameworks are the in-world actors: Pandapi supplies accounts and auth, server lists, fleet orchestration, live stats, and an LLM/MCP control plane, while a companion process executes in-world. See docs/ECOSYSTEM.md for the full roadmap.

Launcher features

The launcher core, inherited from PandoraLauncher and maintained in this fork:

  • Instance management
  • Cross-instance file syncing (options, saves, etc.) (https://youtu.be/wb5EY2VsMKg)
  • Mod deduplication when installed through the launcher (using hard links)
  • Secure account credential management using platform keyrings
  • Custom game output window
  • Mod browser (Modrinth and CurseForge)
  • Automatic redaction of sensitive information (i.e. access tokens) in logs
  • Unique approach to modpack management (https://youtu.be/cdRVqd7b2BQ)

Pandapi, ekaii-launcher, and PandoraLauncher

  • Pandapi is this project: the API-first launcher and its control plane.
  • ekaii-launcher is the ekaii-branded distribution based on Pandapi, shipped for the ekaii community. Same code, ekaii identity and defaults.
  • PandoraLauncher by Moulberry is the upstream launcher this fork is built on; the instance management, syncing, and UI foundations are its work, and credit belongs there. This fork is an independent project: the control API and automation features are developed here and are not being upstreamed.

Build and install

Prebuilt packages (macOS .dmg, portable builds) are published on the releases page. Current release: v5.7.1.

From source (a recent stable Rust toolchain):

git clone https://forgejo.ekaii.fr/exo/ekaii-launcher.git
cd ekaii-launcher
cargo build --release

Documentation

Screenshot

Instance Page