Skip to main content

What is open and what is private

Moonspell is open source under the MIT License, with two exceptions whose source is private: the Moonspell phone app and the crescent CLI. The CLI is still handed out, built, to developers who publish games to the Moonspell app. This page draws that line once, so the other pages do not have to.

The line​

Open (MIT): the engine, the game template, the examples, the skills, the game backend scaffold, the server (Nova, the worker runs, the app API, the web app), the edge Worker, the Moonspell MCP server, the contracts, the specs and these docs.

Private source: the Moonspell phone app (iOS, Android and the App Clip) and the crescent CLI.

Built and handed out: the CLI, as a package that moonspell.app serves together with a starter folder, for local developer mode. You can install and run it; its source is not in the repository.

What is open​

Everything in the public repository is under the MIT License (the LICENSE file at the root):

PartWhere
The engine and the game templatetemplates/crescent-game/ (the engine is src/engine/)
The eleven example gamestemplates/crescent-game/examples/
The skills and agent docstemplates/crescent-game/.claude/skills/, CLAUDE.md, AGENTS.md, docs/
The game backend scaffoldtemplates/crescent-game/.claude/skills/realtime-backend/scaffold/backend/
The starter overlay for local developer modetemplates/crescent-game-local/ and scripts/pack-starter.mts
The server: Nova, the worker runs, the app API, the web app, the developer routesthe repository root: agent/, src/, db/
The edge Workeredge/
The Moonspell MCP servermcp/
Contracts and feature specscontracts/, spec/
These docs and the site that renders themdocs/, docs-site/

You may use, change and ship any of it, including in commercial games, under the terms of the MIT License.

What is private​

  1. The Moonspell app: the native iOS and Android app (and its App Clip) that hosts the feed, the chat with Nova and the player.
  2. The crescent CLI's source: the tool that turns a game into the static bundle the Moonspell app loads, and that signs a developer in, saves and publishes in local developer mode.

These docs do not describe how either works inside: not the bundle format, not how the app loads a game, not the live-update protocol. Where a page mentions them, it says only what they do for a game from the outside.

Two ways to build a game​

1. Engine only, with plain Expo​

Clone the repository and make the template your own. You need no account and nothing from Moonspell.

  • npm run web runs a game in the browser, npm run export:web makes a static web build, and npm run ios and npm run android make a normal Expo development build. See Quickstart.
  • On the phones, the engine looks for the Moonspell app's native module and carries on without it. The game is always active, and exit only does what your onExit does (How it works).
  • The game is an Expo app you own. You host it, ship it to the stores, or keep it to yourself.

The template's crescent scripts (npm start, npm run export, npm run push, npm run doctor) need the CLI and fail in a plain clone. Claude Code and other agents lists the skills that assume it and what to do instead.

2. Publish to the Moonspell app, with local developer mode​

Build the game on your own computer with your own coding agent, and publish it to the Moonspell app on iPhone and Android and to the web.

  • You get a starter folder and the built crescent CLI from moonspell.app (one npx command).
  • You sign in with a Moonspell account (Google).
  • The CLI saves your work to the game's private repo on Moonspell and publishes versions, which are public at once: in the feed, at a share link, open to community builds.
  • Your agent can use the Moonspell MCP server for the engine's skills and your account.

The steps are on Publish to the Moonspell app.

The engine is the same in both: the starter is this template plus a small overlay of agent instructions and settings.

How the hosted product relates to the engine​

The Moonspell app is one user of the engine. Players describe a game in a chat; Nova, the chat agent, starts a worker run in which a coding agent edits that game's own copy of the template; the run exports the game and the app plays the new version. The engine in such a game is the same src/engine/ you get from the public template. Architecture explains the whole system, and the rest of the "How Moonspell works" section covers each part.

The hosted pipeline cannot run end to end from a public clone. The server, Nova and the edge Worker run locally, but a worker run stops at the step that exports the game, because that step builds the CLI from its source. Anything that needs the phone app (testing the iOS or Android apps, App Clips) is out of reach too. Development setup lists what works and what does not.

Contributing​

Contributions to every public part are welcome: the engine, the modules, the examples, the skills, the server, the edge Worker, the MCP servers and these docs. Contributing has the steps, the checks to run and the repository map.

Third-party assets​

The template bundles a few assets made by others (for example KayKit's CC0 adventurer models in assets/models/kaykit/). Their licences and credits are listed in the repository's THIRD_PARTY_NOTICES.md.