This project is officially ARCHIVED. NitroCore is no longer maintained. We've decided to move on due to the stagnation of the GDPS niche and the lack of a sustainable community. The code remains Open Source for educational purposes.
NitroCore is a fast and versatile GDPS core that can be easily deployed anywhere.
Caution
RigbyHost is SHUTTING DOWN. You have 60 days to migrate your data. After that, this deployment option will be gone.
Pick one of providers below and follow the instructions:
- Vercel — Free, easy to deploy
- Cloudflare — Free, requires separate postgres provider
- Standalone/VDS — Not that free, for advanced users
- 🔧 Rich plugin system: Easily extend NitroCore functionality using our SDK
- 🔗 Strict input data validation: Prevent bad data from breaking your server with Zod schemas
- 📁 Clean code: Easy to understand code and best practices
- 🚨 Cheaters detection: We use synthetic and ML tests to verify if your players are legitimate
- 🏭 Full support for hosting services: NitroCore supports distributed configurations natively
If you want to create custom command for your server, just create new file in server/plugins (ex: server/plugins/mycommand.ts)
// Nitro Plugin will automatically register on boot export default defineNitroPlugin(() => { const csdk = useSDK().commands csdk.register( "level", "mycommand", async (args: string[]) => { const context = useCommandContext() if (!context.level!.isOwnedBy(context.user.$.uid)) throw new Error("You should be owner") await context.level!.delete() }, { cLvlAccess: true } ) })
Example of registering a custom music provider to handle different source types:
export default defineNitroPlugin(() => { const msdk = useSDK().music msdk.registerProvider("http", new HTTPProvider()) })
gone 💀
Distributed under the GPLv3 License. See LICENSE for more information.

