Skip to content

About

A beginner-friendly/Advanced desktop launcher for hosting local Minecraft servers on Windows and Linux.

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

4 watching

Forks

Repository files navigation

ObserverLauncher icon

ObserverLauncher

Run a Minecraft: Java Edition server on your own Windows or Linux PC.
No terminal, no account, no cloud. Pick a folder, choose a server type, press Start.

Release Tests License: Apache-2.0 Platform

Website  ·  Changelog  ·  Contributing  ·  Releases

ObserverLauncher Overview tab

What this is

ObserverLauncher is a server hosting app. It is not a client launcher for joining servers. If you want to play on someone else's server, use Prism Launcher or the official launcher. This app is for running the server itself, for you and your friends, from your own machine.

The goal is to cover the setup that normally needs a terminal and a wiki: getting the right jar, matching the Java version, writing the config, opening the firewall, and taking backups you can actually restore.

Project status

An early project maintained by one developer. It is not widely used, and there is no community around it yet.

The core flow works: create a server, start and stop it, watch the console, manage players and content, and take backups. It is tested on Windows, and CI boots a real Paper server on Linux to check that path. Outside that core, expect rough edges. Please report what breaks.

Features

Server setup Downloads Vanilla, Paper, Purpur, Leaf, Folia, Fabric, Forge, NeoForge, Spigot or Velocity from official sources. Version lists load live, so new Minecraft releases appear without an app update. Java is checked against the jar and can be installed for you. When the app starts and finds a server already running in your folder, it offers to reconnect to that process instead of launching a second copy.

Console Live output with timestamps, level filters, search, command history and log export. Known player names in the log are clickable and open the inspector.

Performance TPS, MSPT, CPU and RAM graphs with 15m / 1h / 6h / 24h / 7d / 30d ranges. History persists to disk, so it survives a restart. A banner appears when the tick rate drops sharply or memory keeps climbing, and names the likely cause. JVM presets (Aikar, G1 tuned, ZGC) fill the launch flags from one click.

Players One roster for online, whitelisted, banned and OP players. The inspector draws a rotatable 3D model of the player wearing their armor, reads equipment, inventory and ender chest with real item icons, runs live actions, and edits saved data while the server is stopped. Skins come from SkinsRestorer when the plugin is installed, so offline-mode servers show the skin players actually wear. A leaderboard ranks every player on the save by playtime and reads worlds that older builds missed.

Marketplace Search Modrinth, Hangar, SpigotMC and CurseForge in one box. Compatibility is checked against the detected server before install. Modrinth dependencies resolve, .mrpack files import and export, and a check-updates pass flags installed projects with a newer build. CurseForge imports roll back cleanly when a download fails partway.

Content editor Edit server.properties, spigot.yml, plugin configs and whitelist.json, with syntax highlighting and JSON validation. A collapsible tree keeps large folders manageable. Datapacks can be validated, extracted and reordered in level.dat.

World map Renders terrain and real biomes from your world save, with surface blocks, waypoints, an explored-chunk overlay, jump-to-coordinates and PNG export. A Game rules panel edits level.dat without typing /gamerule and backs the file up first.

Backups Manual or scheduled ZIP snapshots of world folders, taken with save-off / save-all so worlds are not archived mid-write. Restore is built in and zip-slip checked.

Multi-instance Run several servers at once. Each instance has its own folder, Java runtime, RCON, schedule, backups and tunnel. Instances can carry a group name, and Start all / Stop all runs the set one after another.

AI integration (MCP) The app can act as an MCP server so an AI client reads and controls the server. Read tools run freely, write tools ask, destructive tools always ask. Workflow prompts, resource templates, an audit log, and in-client metric charts on supporting clients.

Bedrock crossplay Detects Geyser and Floodgate, checks their config.yml for the mismatches that break crossplay, and applies a one-click fix that edits the file line by line with a backup. A Pinggy tunnel shares the Bedrock UDP port next to the Playit Java tunnel.

Operations A daily scheduler starts and stops a server at set times. Webhooks post to Discord or a generic endpoint on start, stop, crash and player join. On an unexpected exit the crash analyser reads the newest report and lists repair hints. Prometheus /metrics exposes the same snapshots the dashboard uses.

Also in the app

  • Properties history. A snapshot is taken before every server.properties save; pick one to view a line diff and restore it.
  • Server templates. Save the current setup as a named template and reuse it from the wizard.
  • Proxy backend manager. A Velocity instance can add and remove backend servers in velocity.toml without hand-editing the file.
  • MOTD preview. The motd line in server.properties is shown with its colours, the way the game renders it. A \u00a7 escape in the file is decoded first, because that is what Java's properties reader hands the server.
  • Docker export. Generate a Dockerfile and a compose file for the current instance from Settings.
  • Remote dashboard. A loopback-only web page shows status, console and players from another device on the same network, guarded by a token and an optional IP allowlist.

Screenshots

World map
World map
MCP / AI integration
MCP / AI integration
Player inspector, 3D skin preview
Player inspector with a 3D skin preview
Player inventory
Player inventory with item icons

Install

Download the latest release:

Platform File
Windows 10/11 (64-bit) ObserverLauncher-6.1.0-setup.exe
Linux (AppImage) ObserverLauncher-6.1.0.AppImage

Windows: run the installer, which sets up auto-update. Linux: chmod +x ObserverLauncher-6.1.0.AppImage and run it. No root needed.

Windows SmartScreen note. The installer is not code-signed, so Windows may show a "Windows protected your PC" or "Unknown publisher" warning on first run. Click More info, then Run anyway. The Linux AppImage is unaffected. To be sure a download is intact, compare it against the SHA-256 in the release notes.

From source (Node.js 18 or newer):

npm install
npm start

Auto-update uses GitHub Releases and works with the NSIS installer and the AppImage. Portable .exe and .deb builds do not update themselves.

Quick start

  1. Launch the app. The first run opens the Overview tab.
  2. Pick an empty folder, or click Create new server to make one under Documents/ObserverLauncher Servers.
  3. Run the wizard: choose the server software and a Minecraft version. Spigot compiles from source and takes a few minutes; progress shows in the Console.
  4. Accept the Minecraft EULA (the app can do this on first start).
  5. Set memory and press Start.

To let friends join, open How friends can join. On the same network, share the local address. Otherwise forward the port on your router, or click Share to internet (Playit.gg) for a public address with no router setup.

Server software

Software Source TPS/MSPT
Vanilla Mojang version manifest Player count only
Paper, Folia, Velocity PaperMC Fill API Yes
Purpur Purpur API Yes
Leaf Leaf API Yes
Fabric Fabric meta API Player count only
Forge, NeoForge Official installer Yes
Spigot Compiled via BuildTools (needs Git) Via Spigot config

Languages

English, Tiếng Việt, Español, Português (BR), Deutsch, Русский, 简体中文. All fully translated; a missing key falls back to English.

Requirements

Minimum Recommended
OS Windows 10 (64-bit) or a modern 64-bit Linux distro Windows 11 or a recent Ubuntu/Fedora
RAM 4 GB 8 GB or more
Disk ~1 GB 5 GB or more
Java Any (the app can detect and install it) 64-bit Java 17, 21 or 25, matching the server
Git Only to compile Spigot Install it if you use Spigot

No admin rights are needed. Java installs into your user folder; elevation is requested only when opening the Windows Firewall for a port.

Troubleshooting

Java not detected. Install it from Settings, or set the path manually. If java -version fails in a terminal, the app will not see it either.

"This jar needs Java X+, detected Java Y". The jar wants a newer Java. Minecraft now uses calendar versioning: 26.x needs Java 25, 1.20.5+ and 1.21.x need Java 21, 1.18+ needs Java 17, older needs Java 8.

The server will not start, with no clear error. Open the Console and scroll up. The real Java error is usually a few lines above. Common causes are a Java version mismatch, too little RAM, or a corrupted jar.

"Failed to load properties" on first start. Expected. server.properties does not exist yet, so the server complains once, creates it and continues.

Start button greyed out. Hover it. The tooltip says why (no folder, no runnable jar, or Java not detected).

Spigot build fails. Spigot has no pre-built download and is compiled locally with BuildTools, which needs Git on your PATH. Install Git from git-scm.com and retry.

Friends cannot connect over the internet. Opening the Windows Firewall is only half the job. Forward the port on your router, or use Share to internet (Playit.gg). Some ISPs use carrier-grade NAT, where port forwarding does not work at all.

The app is stuck on "Stopping...". Use Force stop in the top bar. It kills the server process tree immediately and asks first, since unsaved progress may be lost.

Data and privacy

ObserverLauncher is a local tool with no account, no telemetry and no analytics. Downloads happen only when you ask, and only from official sources: server jars from Mojang, PaperMC, Purpur, Leaf, Fabric and Forge; plugins and mods from Modrinth, Hangar and SpigotMC; item and block icons and default player skins from the public PrismarineJS mirror; player skins from Mojang when a server is in online mode; Java runtimes when you use auto-install; and update metadata from GitHub Releases. CurseForge is queried only when you supply your own API key. The Pinggy tunnel opens an outbound SSH session to free.pinggy.io, a webhook posts to the URL you configure, and Prometheus /metrics listens on loopback only. Nothing else is uploaded, and the app runs no background service once closed.

The player inspector reads files that already exist on your machine: the player .dat files in your world folder, the mod jars in your server's mods folder for item icons, your own Minecraft client jar for a default skin, and SkinsRestorer's data folder when that plugin is installed. No Mojang texture or model is bundled with the app; everything is read on your machine or downloaded to it at runtime.

Launcher data lives outside the server folder, in Electron's userData directory (%APPDATA%\ObserverLauncher on Windows, ~/.config/ObserverLauncher on Linux). Set OBSERVER_DATA_DIR to move it.

Known limitations

  • Windows and Linux only. No macOS build.
  • TPS/MSPT need a supported server. Vanilla and Fabric report player count only.
  • The longer performance ranges (7d, 30d) fill up over time. Right after an update they hold only what has been recorded since then.
  • SkinsRestorer skins are read from its default file storage. A server that stores them in MySQL or PostgreSQL falls back to the default skin.
  • Bedrock crossplay needs a Geyser jar in the server folder. The free Pinggy tier closes a tunnel after about an hour and the app opens it again.
  • The scheduler fires on the PC's local clock. An action scheduled while the computer is asleep is skipped, not replayed later.
  • Spigot needs Git and a full JDK, and compiles slowly.
  • Velocity proxies do not tick a world, so their TPS/MSPT panel shows N/A.
  • Auto-update requires the packaged installer or AppImage.
  • Port forwarding is your responsibility unless you use Playit.gg.
  • The world map is CPU-heavy. Panning and zooming can briefly affect a running server.

Advanced usage

Beyond the desktop window, the same backend runs without a GUI. This is optional; the app works fully on its own.

CLI. The observer command maps one command per backend action. Useful for scripts and servers without a desktop.

observer status
observer start
observer players
observer install luckperms
observer init --template modded-performance

Flags: --json for scripts, --instance <id> to target an instance, --help, --version.

MCP / AI integration. The app can act as an MCP server so an AI client can read and control the server. Enable it in Settings under MCP / AI. It binds to 127.0.0.1 with a fresh token each launch. Read tools run freely, write tools ask for confirmation, and destructive tools always ask. When you enable Auto-allow write tools, the everyday lifecycle actions (start, stop, restart, force-stop) stop prompting, while data-destroying tools still always confirm. Every write and destroy call is written to an audit log. The tool list also advertises annotations and output schemas, offers workflow prompts such as "Diagnose my server", and exposes resource templates to read an instance's console or a server file by URI. On clients that support MCP Apps, the metrics tool draws charts in the client.

Remote access. An optional loopback-only HTTP server for checking on a running server from another device. Open http://127.0.0.1:<port>/ for a small dashboard (status, console, players), or call the JSON API from a script. With Read-only off you can also start, stop, restart and kick. A token and an optional IP allowlist guard every request; it can never install, delete or edit files. Use Tailscale to reach it from anywhere. Full guide: docs/remote.md.

Docker. Run the headless backend in a container:

observer docker create --type fabric --ram 4 --port 25565 --out my-server
cd my-server && mkdir -p server data && docker compose up -d

The launcher is PID 1 and the JVM is its child, with the server folder and launcher data in two volumes. Full guide: docs/docker.md.

Modpack CI/CD. A modpack can be a declarative modpack.json, verified in CI before anything is downloaded:

observer modpack verify modpack.json   # resolve items, check loader/MC, deps
observer modpack build modpack.json --out my-server

Full guide: docs/modpack.md.

For developers

The app has three layers: renderer (UI, no Node access), preload (the only IPC bridge), and main (Electron, a thin composition root that registers feature modules). A headless entry point runs the same backend without Electron, which is what the CLI and Docker image use.

src/renderer/   UI (html + css + locales + js, loaded in numeric order)
src/preload.js  IPC bridge (contextIsolation on, nodeIntegration off, sandbox on)
src/main.js     main process; registers feature modules
src/main/       backend modules, adapters/ per server software, platform/ per OS
src/mcp/        MCP server, stdio bridge, doctor and repair
src/headless.js no-window entry point
src/cli.js      observer command
npm install
npm start         # launch in development mode
npm test          # unit/regression suite
npm run test:e2e  # Playwright tests against the real app

Build the installers with npm run build:win, npm run build:linux or npm run build:all. Releases run through GitHub Actions on a v* tag.

There is more in CONTRIBUTING.md: the module layout, the multi-instance model, the Minecraft data-format traps, the MCP/remote/Docker details, and the guidelines for changes.

Contributing

Issues and pull requests are welcome. Read CONTRIBUTING.md first. A useful bug report includes what you clicked, what you expected, and the Console output.

License

Apache-2.0 © ObserverLauncher contributors. See NOTICE for third-party attributions.

Windows installers are not code-signed yet. See CODE_SIGNING.md for how the project plans to sign them and what to do about the SmartScreen warning in the meantime.

ObserverLauncher is an unofficial tool. It is not affiliated with, endorsed by or associated with Mojang, Microsoft, or any server-software project. Minecraft is a trademark of Mojang Synergies AB. Running a server requires accepting the Minecraft EULA.

About

A beginner-friendly/Advanced desktop launcher for hosting local Minecraft servers on Windows and Linux.

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages