Slime
A friendly Minecraft server manager for humans, not sysadmins.
Slime is a Python application with a full-screen terminal UI (TUI) and a scriptable CLI. It helps beginners create, configure, run and troubleshoot Minecraft servers without hunting for jars, Java versions or API URLs.
Status: 1.3.0. Core features are implemented and covered by tests, but Slime is still young. Expect rough edges and please report them on the issue tracker.
Why Slime?
Setting up a Minecraft server usually involves five different websites, a Java version you did not know you needed, a EULA you have never read, and a port that is already in use. Slime turns that into a guided flow:
slime java install 21
slime server create survival --project paper --memory 4096 --accept-eula
slime server run survival
Or just run slime and use the TUI.
Features
- PaperMC Fill API v3 - download the latest builds of Paper, Folia, Velocity and Waterfall directly from the official API. No scraping, no BuildTools.
- Purpur support - Purpur builds come straight from the official Purpur API v2, with versions and builds listed alongside the PaperMC projects.
- Temurin Java manager - install the exact Eclipse Adoptium JDK a server
needs (8, 11, 16, 17, 21, 25), per platform and architecture. Slime downloads
the archive, verifies the SHA-256 checksum, extracts it into
~/.slime/javaand records the exactbin/javapath. - TUI + CLI - a Textual interface for browsing servers, editing settings, watching the console live and sending commands; a Typer CLI for automation.
- Server editor - change the server name, min/max RAM, launch flags
(Aikar's performant flags by default), CPU core allocation, Java path/version,
and every
server.propertiesvalue from one screen. Destructive actions live in a separate Dangerous tab and require confirmation. - Server lifecycle - create, start, stop, restart, delete and inspect servers. A foreground console streams logs and accepts commands via stdin. Servers that exit with an exception or a non-zero status are reported as crashed; a deliberate stop or kill stays stopped.
- Environment checks - Python, OS, disk space, available RAM, port
conflicts, EULA status, server jar,
server.propertiesconsistency and Java availability. - Beginner-friendly defaults - sensible
server.properties, MOTD, port, memory and Java version detection; clear error messages with actionable hints. - Cross-platform - Windows 10+ and Linux (macOS works but is not a primary target). Windows 7/8/8.1 will require a separate legacy build; see Platform support.
- Local-first - everything lives in
~/.slimeby default. No account, no telemetry, no cloud.
Supported projects
| Project | Kind | API | Java (by default) |
|---|---|---|---|
| Paper | Server | Fill v3 | 21 for 1.20.5+, 17 for 1.17-1.20.4, 8 for ≤1.16.5 |
| Folia | Server | Fill v3 | same as Paper |
| Purpur | Server | Purpur v2 | same as Paper |
| Velocity | Proxy | Fill v3 | 17 |
| Waterfall | Proxy | Fill v3 | 11 |
Slime only uses the official download APIs for these five projects. Spigot, Forge, NeoForge and Fabric are not supported yet.
Proxies generate their own velocity.toml / waterfall.yml on first start.
Slime prepares the directory and jar, then leaves proxy networking config to
you.
Requirements
- Python 3.11+
- Windows 10+ or Linux (x86-64 or ARM64)
- Internet access for the first setup (PaperMC, Purpur and Adoptium APIs)
- At least 1 GiB of free disk space; 5 GiB+ recommended
Installation
Slime requires Python 3.11 or newer.
The recommended way is an isolated installation with pipx:
pipx install slime-mc
Or install it into the current environment with pip:
pip install slime-mc
Run it:
slime --version
slime
Standalone executables (Windows and Linux)
Every tagged release includes a self-contained executable and a matching
.sha256 checksum on the
GitHub Releases page:
slime-<version>-windows-x64.exeslime-<version>-linux-x64
They bundle Python and all dependencies, so no separate Python installation is needed.
Windows:
Get-FileHash .\slime-1.3.0-windows-x64.exe -Algorithm SHA256
.\slime-1.3.0-windows-x64.exe --version
.\slime-1.3.0-windows-x64.exe
Linux:
sha256sum -c slime-1.3.0-linux-x64.sha256
chmod +x slime-1.3.0-linux-x64
./slime-1.3.0-linux-x64 --version
./slime-1.3.0-linux-x64
Compare the hash with the published .sha256 file before running the binary.
Both executables use the same ~/.slime home directory as the Python install.
From source (development)
git clone https://github.com/cizik5064-bit/slime.git
cd slime
python -m venv .venv
Windows:
.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
Linux/macOS:
source .venv/bin/activate
pip install -e ".[dev]"
See CONTRIBUTING.md for the development workflow.
To build the standalone executable locally:
python -m pip install -e ".[build]"
python scripts/build_exe.py
The binary and its checksum are written to dist/.
Quick start (CLI)
# 1. Install the Java version the server needs
slime java install 21
# 2. Create a Paper server using the latest Minecraft version
slime server create survival --project paper --memory 4096 --accept-eula
# 3. Start it in the foreground and attach the console
slime server run survival
Inside the console, type Minecraft commands (op Notch, say hello, stop).
Press Ctrl+C to stop the server gracefully.
Useful follow-ups:
slime server list
slime server info survival --checks
slime doctor
slime server versions --project paper
slime server builds 1.21.4 --project paper
Choosing a version and build explicitly:
slime server create creative \
--project paper \
--version 1.21.4 \
--channel STABLE \
--memory 6144 \
--port 25566 \
--accept-eula
Quick start (TUI)
slime
| Key | Action |
|---|---|
n |
New server |
j |
Java manager |
d |
Doctor (environment checks) |
r |
Refresh |
q |
Quit (stops servers started by the TUI) |
Enter |
Open the selected server |
Esc |
Back |
The server screen shows live console output, a command input, and Start / Stop /
Kill / Restart / Edit / Delete buttons. Edit opens the server editor with
General, server.properties and Dangerous tabs. Servers started from the TUI
keep running while you navigate between screens, and are stopped gracefully
when you quit Slime.
Commands
Global
slime [--home PATH] [--verbose] [--version]
slime tui
slime doctor [--server NAME] [--json]
With no arguments, slime opens the TUI when stdout is a terminal.
Servers
slime server list [--json]
slime server create NAME [--project paper|folia|purpur|velocity|waterfall]
[--version VERSION] [--build N] [--channel STABLE|BETA|ALPHA|ANY]
[--memory MB] [--port PORT] [--java MAJOR]
[--motd TEXT] [--accept-eula]
slime server info NAME [--checks] [--json]
slime server run NAME [--memory MB] [--java PATH] [--no-console]
slime server eula NAME [--accept/--revoke]
slime server delete NAME [--yes] [--keep-files]
slime server path NAME
slime server versions [--project PROJECT] [--limit N] [--json]
slime server builds VERSION [--project PROJECT] [--channel CHANNEL] [--limit N] [--json]
Java
slime java list [--json]
slime java releases [--json]
slime java install MAJOR [--force] [--os OS] [--arch ARCH]
slime java remove MAJOR [--yes]
slime java which [MAJOR] [--server NAME]
Configuration
slime config show [--json]
slime config set KEY VALUE
slime config path
Editable settings: default_memory_mb, default_java_major, default_port,
accept_eula_default.
How Java selection works
Each server records the Java major it needs. Slime resolves it in this order:
- An explicit
java_pathon the server (set withslime server run --java). - A Temurin runtime managed by Slime with the same major
(
~/.slime/java/temurin-<major>-<os>-<arch>). - A system Java found on
PATHor viaJAVA_HOME, but only if its major matches exactly.
If nothing matches, Slime tells you exactly what to run:
Error: Java 21 is required by survival (Paper 1.21.4), but it is not installed.
Hint: Install it with: slime java install 21
Install specific runtimes with:
slime java install 17
slime java install 21
slime java list
Slime never installs a JDK silently. It also never overwrites eula=true
without explicit confirmation (--accept-eula or an interactive prompt).
Where files live
Default home: ~/.slime (override with SLIME_HOME or --home).
~/.slime/
config.toml # settings
servers/
<name>/
slime.json # Slime metadata (project, build, Java, port, RAM)
server.jar # downloaded PaperMC jar
server.properties # generated for servers
eula.txt # generated for servers
world/ # created by Minecraft on first start
java/
temurin-21-windows-x64/
bin/java.exe
slime-java.json
cache/ # temporary downloads
logs/
slime.log
<server>.log # full console log per server
server.properties is only created if it is missing: existing user values are
preserved. Slime warns when the port in server.properties disagrees with the
port recorded in slime.json.
Environment checks
slime doctor (or d in the TUI) reports:
- Python version (3.11+)
- Operating system (Windows 10+, Linux, macOS)
- Writable Slime home directory
- Free disk space (error below 1 GiB, warning below 5 GiB)
- Per server: jar, Java runtime, EULA, port, RAM,
server.propertiesport - Installed Java runtimes
Exit code 2 means at least one check failed, which makes it usable in CI.
Platform support
| Platform | Status |
|---|---|
| Windows 10 / 11 | Primary target |
| Linux x86-64 | Primary target |
| Linux ARM64 | Supported by Adoptium; lightly tested |
| macOS | Should work, not a primary target |
| Windows 8.1 | Not supported by Python 3.11+ |
| Windows 7 / 8 | Needs a separate legacy build (Python 3.8, older Textual) |
Windows 7 and 8/8.1 support cannot be added to this codebase: Python 3.9+ and
modern Textual do not run there. A future 0.x-legacy build may target Python
3.8 with pinned dependencies. Until then, Slime prints a clear compatibility
error on unsupported Windows versions.
Development
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
pip install -e ".[dev]"
ruff check .
pytest
Project layout:
src/slime/
cli.py # Typer commands
tui/ # Textual app, screens, CSS
api/papermc.py # Fill API v3 client
api/purpur.py # Purpur API v2 client
api/catalog.py # routes a project to its download API
api/adoptium.py # Adoptium API v3 client
java.py # Temurin install/discovery
provision.py # create-server flow
process.py # server process + console
checks.py # environment checks
store.py # ~/.slime/server registry
models.py # data models and validation
properties.py # server.properties / eula.txt
tests/ # pytest suite (in progress)
The design favours explicit, testable modules: API clients return dataclasses, provisioning is separated from process management, and the TUI only orchestrates services.
Roadmap
- Core architecture, models and validation
- Fill API v3 client (Paper, Folia, Velocity, Waterfall)
- Purpur API v2 client
- Adoptium Temurin client and Java manager
- CLI (servers, Java, diagnostics, config)
- Textual TUI (dashboard, server console, create wizard, Java, doctor)
- Server settings editor (General, server.properties, Dangerous)
- Full test suite and CI on Windows + Linux
- First public release (1.0.0)
- Packaging on PyPI (
slime-mc) - Backups and restore
- Plugin/mod browser (Modrinth / Hangar)
- RCON console and cross-process server control
- Legacy Windows 7/8.1 build
- Standalone Windows executable via Nuitka
Disclaimer
Slime is an unofficial community project. It is not affiliated with Mojang, Microsoft, PaperMC, or Eclipse Adoptium. Minecraft is a trademark of Mojang Studios. By creating a server you agree to the Minecraft EULA; Slime only records your explicit acceptance and never accepts it for you.
License
MIT - see LICENSE.
Metadata
Release files for slime-mc 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| slime_mc-1.3.0.tar.gz | 87.0 kB | With provenance | Details for slime_mc-1.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| slime_mc-1.3.0-py3-none-any.whl | Python 3 | none | any | Details for slime_mc-1.3.0-py3-none-any.whl |
Total release size: 165.1 kB
Release files / slime_mc-1.3.0.tar.gz
| Download URL | slime_mc-1.3.0.tar.gz |
|---|---|
| Size | 87.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2cde753d6932658828d588bdbb6762f70e9b72454404a9ca1800cca9473b7d5
|
|
BLAKE2b-256 checksum How to use checksums |
c176641de8a48bbaf75749a8d813e6291c4572de6c9f5b707fe980c4ce27db0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logRelease files / slime_mc-1.3.0-py3-none-any.whl
| Download URL | slime_mc-1.3.0-py3-none-any.whl |
|---|---|
| Size | 78.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fb3f9e315ada41deba39097c889ea46d4c227a8c40b6efb309cbcade9b5e3173
|
|
BLAKE2b-256 checksum How to use checksums |
0de91c2b6e0555bdbf132a119e4c17edf66b0bb51609fbc1434df3b516963637
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logSecurity for slime-mc 1.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for slime_mc-1.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.