Skip to main content
Luminesk-CLI

A reproducible composer for Minecraft Java and Bedrock server instances

CI GitHub Release PyPI Version License Docs

What Luminesk does

Luminesk-CLI (nesk) installs and operates Minecraft Java and Bedrock servers from reviewable recipes. One server lives in one directory. Docker is the only runtime, so the same lifecycle works on Linux, macOS, and Windows without installing a Java, PHP, or other server runtime directly on the host.

A recipe tells Luminesk where the server comes from, which inputs it needs, which ports and files it uses, how to decide that it is ready, and which data must survive an update. Luminesk resolves exact artifact hashes and Docker image digests, shows a plan, and applies it transactionally.

Your first server

You need Docker Engine or Docker Desktop. Git is not required for normal use. The quickest installation uses the self-contained release binary and does not require Python.

Linux or macOS:

curl -fsSL https://luminesk.taskov1ch.xyz/sh | sh -s -- --yes

Windows PowerShell:

irm https://luminesk.taskov1ch.xyz/ps1 | iex

The installer detects the operating system and CPU, downloads the latest release, and verifies its SHA-256 digest before installing it. Run the same command again to update. The Unix --yes belongs to the installer and does not accept the Minecraft EULA or approve later nesk operations. If you prefer a Python-managed installation, Python 3.13+ is required:

uv tool install luminesk-cli

Then check the environment and install a recipe:

nesk doctor
nesk catalog update
nesk search --type core
nesk info lumi
nesk install lumi --dir ./servers/example

nesk info lumi lists every input before installation. In an interactive terminal, install opens a wizard: press Enter to keep a default and answer any required recipe questions. It then shows the exact recipe, downloads, Docker image, capabilities, and file changes before asking for confirmation.

lumi is a Bedrock example. Use nesk search --edition java to find Java recipes. A remote install needs a new, empty destination directory. With pipx, use pipx install luminesk-cli. ZIP bundles for Linux, macOS, and Windows are also available on the GitHub Releases page.

Start, configure, and use the console

nesk start --dir ./servers/example
nesk status --dir ./servers/example
nesk attach --dir ./servers/example

attach opens a full-screen console with recent history and live output. Type a server command and press Enter. Use Ctrl+D to detach while leaving the server running, Ctrl+C to stop it gracefully, or Ctrl+K to kill it.

Editable server configs are normally created by the server on its first start. Official recipes do not seed partial server.properties-style files. Stop the server, edit the generated config inside the instance directory, then start it again. EULA files are the deliberate exception for recipes that require an explicit acceptance input.

When your shell is already inside the instance, --dir may be omitted. From anywhere else, pass it explicitly so there is no ambiguity about which server the command targets.

nesk logs --dir ./servers/example --tail 500 --since 10m --timestamps
nesk stop --dir ./servers/example
nesk list

Review an update before applying it

nesk outdated --dir ./servers/example
nesk diff --dir ./servers/example
nesk update --dir ./servers/example --dry-run
nesk update --dir ./servers/example --yes

Luminesk refuses to silently overwrite a locally changed managed file. An update of a running server stops it, applies the reviewed package, starts it, waits for readiness, and attempts to restore the previous instance if a required step fails. Transaction rollback is not a replacement for an independent backup of production worlds.

Automation

Interactive defaults are intentionally disabled for scripts. Supply inputs and trust approval explicitly:

nesk install lumi --dir ./servers/example \
  --dry-run --json --non-interactive
nesk install lumi --dir ./servers/example \
  --yes --json --non-interactive

Handled failures use stable exit codes and a JSON error object. Secret inputs must use --set-file; Luminesk does not persist them or place them in runtime arguments.

What is stored in an instance?

  • luminesk.toml — the reviewed recipe;
  • luminesk.lock — exact source and image identities;
  • .luminesk_cli/ — ownership, transaction, backup, recipe, and runtime state;
  • server-owned files such as worlds, plugins, logs, and generated configs.

Do not hand-edit the lock or .luminesk_cli/. Use nesk diff, nesk validate --instance, and nesk recover when state needs inspection or recovery.

Custom recipes and migration

Recipe authors can start with:

nesk init --dir ./recipe --name example-server
# Replace the placeholder source in luminesk.toml.
nesk validate --dir ./recipe --static
nesk lock --dir ./recipe
nesk plan --dir ./recipe

Read the documentation, Quick Start, and Command Reference. Luminesk 1.x instances require a side-by-side migration; their control state and instance formats are not interchangeable.

Development

uv sync --locked --extra dev
uv run python scripts/format.py --fix
uv run mypy .
uv run pytest

See CONTRIBUTING.md. Recipe trust, tested backups, and workload-specific validation remain the operator's responsibility.

License

GPL-3.0-or-later. See LICENSE.

Metadata

Release files for luminesk-cli 2.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for luminesk-cli 2.0.2
File Size Uploaded
luminesk_cli-2.0.2.tar.gz 163.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for luminesk-cli 2.0.2
File Interpreter ABI Platform
luminesk_cli-2.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 319.2 kB

Release files / luminesk_cli-2.0.2.tar.gz

Download URL luminesk_cli-2.0.2.tar.gz
Size 163.2 kB
Tags Source
SHA-256 checksum
How to use checksums
522668b8469d97a21144cb514360caa3dc1b72e739e9202a716434d1fafb824b
BLAKE2b-256 checksum
How to use checksums
ca7d3025f517f945ddf624aeb32c2d16d021bccb5c5609178784574dbdbeb6b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 8, 2026.

Transparency log

Release files / luminesk_cli-2.0.2-py3-none-any.whl

Download URL luminesk_cli-2.0.2-py3-none-any.whl
Size 156.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
64f13e0ffba44c519134f56b1c25f4a4db1af28a832134fdf14da9dea81336fb
BLAKE2b-256 checksum
How to use checksums
94fe2e7cd70a7be9a5167cb399ffedd6936a8116dc6ac62c1d2741874b10d214
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.2 This release

2 release files

2.0.0

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page