Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
EzSetup connects a Paper server to an AI endpoint you choose, then lets that AI operate the server. You type what you want in chat. The AI writes commands, runs them through the console, reads the results, and keeps going until the job is done. Every command appears in chat as it runs, so nothing happens without you seeing it.
If you don't want to use AI, the plugin also includes a local HTTP API with 40+ JSON endpoints for files, commands, players, worlds, plugins, backups, scheduling, logs, and live metrics. You get the same control without a model.
I built the first version because I was tired of typing the same forty setup commands on every new server. Now I type one sentence and watch it happen.
Quick start /ezsetup create myai gpt-4o-mini https://api.openai.com/v1 sk-your-key-here /ezsetup test /ezsetup ai turn keepInventory on, set difficulty to hard and op my friend create saves a connection. It takes a name, the model, the endpoint URL, and your API key, in that order. test sends a small request to your endpoint and tells you whether the key and URL work. No guessing. ai hands your message to the model and lets it run.
Any endpoint that speaks the OpenAI chat completions format works. OpenAI, OpenRouter, Groq, DeepSeek, a local Ollama or llama.cpp server. If it takes a key and a URL, EzSetup can use it.
What the agent does The agent loop works like this:
Your message goes to the model along with a catalog of everything the plugin can do.
The model replies with a short message for you plus a list of actions.
Each action runs through the same router a manual API call would use, so the file sandbox, command policy, and audit log still apply.
The results go back to the model, which plans its next move.
This repeats until it returns no actions, or the round limit is hit. The default is 6 rounds and 10 actions per round. Both are configurable.
A few things I've asked mine to do:
"set up a survival server, keep inventory on, peaceful at night"
"broadcast that the server restarts in five minutes"
"read the last 200 lines of the log and tell me why that plugin failed to load"
"back up the world, then change the motd in server.properties"
By default the agent runs with full console access. That means op, deop, gamemode, stop, give, whitelist, and every command from every plugin you have installed. If that is more trust than you want to give, one command takes it back:
/ezsetup access off Then the regular command policy applies to the AI too. The choice is yours.
Everything else in the box Local control API. 40+ endpoints on 127.0.0.1:7777, configurable. Bearer token auth with salted SHA-256 storage. Plaintext is shown exactly once. Rate limiting, request size caps, and per-token scopes. Build your own dashboard, Discord bot, or deploy script on top of it.
Runtime plugin compiler. Send Java source over the API and EzSetup compiles it, packs the jar, and loads it. No restart needed. The compiler classpath includes the server jar and every jar in your plugins folder, so generated plugins can call your other plugins directly. This needs a full JDK rather than a bare JRE. The plugin checks for that and tells you instead of crashing.
Backups. Zip up worlds and plugins on demand or on a schedule, with a cap so old backups rotate out on their own. A pending restore gets applied before worlds load on the next boot.
Task scheduler. Recurring jobs that persist to disk, so they survive restarts.
Metrics. TPS sampling with a rolling history, plus a watchdog that can run a rescue command of your choice when TPS falls too low.
Audit log. Every mutating request lands in audit.jsonl. Who, what, when.
Security The API binds to 127.0.0.1 only. Keep it that way, or tunnel through SSH if you need remote access.
File access goes through a sandbox. Paths get resolved and normalized first. Traversal and symlink escapes are blocked. tokens.json, connections.json, and eula.txt are untouchable.
The command policy is deny-wins. minecraft:/bukkit: namespace prefixes get stripped before matching.
Your API key lives in connections.json on your own server and goes nowhere except the endpoint you configured. It is never logged and never shows up in backups.
This plugin can change anything on your server. Treat tokens like passwords.
Installation Drop the jar in plugins/.
Start the server once. A bootstrap API token is written to plugins/EzSetup/bootstrap-token.txt.
Run /ezsetup create, then /ezsetup test, then /ezsetup ai with whatever you want done.
Requirements: Paper 26.1.2 and Java 25. That is the whole list. No dependencies, nothing shaded, no database. This is a server-side plugin. Players do not install anything.
For the runtime compiler you will want a JDK instead of a JRE. Everything else runs fine without one.
FAQ Does it come with an AI model? No. You bring the endpoint and the key. The plugin is the hands.
Is my key safe? It sits in plugins/EzSetup/connections.json on your machine and is only ever sent to the endpoint you chose.
Can it run commands from my other plugins? Yes, at console level, whatever you have installed.
Why are the in-game messages all lowercase? On purpose. It is a style thing. The whole plugin talks like that.
Does it work on Spigot or older Paper? It is built against Paper 26.1.2 on Java 25. Older servers probably will not load it, and I would rather support one target properly than three badly.


