MCPcopy Index your code
hub / github.com/Pasta-Devs/Marinara-Engine

github.com/Pasta-Devs/Marinara-Engine @v2.0.9

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.9 ↗ · + Follow
10,045 symbols 28,822 edges 920 files 424 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🍝 Marinara Engine

Fun. Intuitive. Plug-And-Play.

A local, AI-powered chat, roleplay, and game engine built around one idea: you install it, you run it, and it just works. Oh, and don't forget about the part where you have fun! ALSO, HEY, LOOK, IT'S FREE.

Created with agentic use in mind, allowing multiple requests at once. Everything is connected. Chat with your characters OOC about your roleplays. Have them create RP scenes for you. All designed with simplicity in mind: we don't want to spend hours on setup, we just want to goon play.


⚠️ Alpha Software — Early release. Expect rough edges, missing features, and breaking changes. Bug reports and feedback are very welcome!


Table of Contents


Screenshots

Roleplay Chat — Desktop

Roleplay Mode — Character sprites, custom backgrounds, weather effects, and AI agents

Home    Onboarding Tutorial

Home screen   ·   Guided onboarding

DM Conversation    Conversation with Selfie

Conversation Mode — Discord-style DMs with selfies and image generation

Bot Browser

Bot Browser — Search and import characters from Chub.ai

Game Mode — Scene

Game Mode — AI Game Master, party of characters, generated backgrounds, weather, and time of day

Game Dialogue    Party Card

NPC dialogue tracking   ·   Party member card with stats, levels, and abilities

Mobile Group Conversation      Mobile Roleplay      Mobile Game Mode

Fully responsive — Conversations, Roleplay, and Game Mode all work on phones and tablets via PWA


Latest Release

Current stable release: v2.0.9.

See CHANGELOG.md for detailed release notes. Tagged releases use the vX.Y.Z format and are published on the Releases page. Android APKs are Termux bootstrap + WebView shells: they can download Termux from F-Droid, launch Android's installer, start the Termux setup flow after required permission prompts, then open the local Marinara server on the same device.


Roadmap

  • Free-to-download mobile apps for Android and iPhone
  • An engine feature for building and sharing full games with custom sprites, soundtracks, and scenarios
  • New game modes: tabletop-style, point-and-click, and classic text adventures
  • Ongoing improvements and bug fixes

More detailed public roadmap.


Installation

Platform Guide
🐳 Docker / Podman Container Installation Guide — recommended
🪟 Windows Windows Installation Guide
🍎🐧 macOS / Linux macOS / Linux Installation Guide
🤖 Android APK Bootstrap Android APK Guide — guided tap-through install/start shell
🤖 Android Manual Termux Android (Termux) Installation Guide — manual fallback
📱 iOS / iPadOS iOS / iPadOS PWA Guide

Recommended Android path: download the Android APK from the latest GitHub Release, open it, then tap Install / Start Marinara. The APK can download Termux from F-Droid, hand it to Android's installer, request Termux command permission, start the setup command, and open the local Marinara server when it is ready. If Android blocks that handoff, the APK copies a fresh-Termux setup command that can be pasted into Termux manually. Android still shows its required install/permission prompts.

Each guide covers installation, updating, and LAN access for that platform. See Configuration Reference for environment variables setup. Having trouble? See FAQ and Troubleshooting.

Upgrading from an older release? See Upgrading to v2.0.0 for the platform-by-platform path from v1.6.1.

Security defaults are intentionally local-first: loopback access works out of the box, ordinary LAN and public clients require Basic Auth unless you explicitly opt back in, and Tailscale (100.64.0.0/10) plus Docker bridge (172.16.0.0/12) traffic are trusted by default for easier private installs. Set BYPASS_AUTH_TAILSCALE=false or BYPASS_AUTH_DOCKER=false if you want those clients to authenticate too. ALLOW_UNAUTHENTICATED_PRIVATE_NETWORK=true restores unauthenticated access for other trusted private networks; public clients still require ALLOW_UNAUTHENTICATED_REMOTE=true. Powerful actions such as backups, bulk import, update apply, sidecar install/download/delete, haptics, and custom tool mutation also require ADMIN_SECRET; see Access Control.


Features

Chat & Roleplay

Three chat modes — Conversation (Discord-style DMs), Roleplay (immersive RPG with sprites and backgrounds), and Game (AI Game Master with party, quests, and combat). Characters can share memory across modes. Create or import characters, search the Chub.ai bot browser, organize chats into folders, branch conversations, swipe between alternate responses, and import from SillyTavern.

Visual & Immersive

Character expression sprites with automatic emotion switching, custom scene backgrounds, dynamic weather overlays, two visual themes (Y2K Marinara and SillyTavern classic), and light/dark mode.

AI Agent System

20+ built-in agents that run alongside your chat — world state tracking, quest management, combat, expression detection, background selection, Narrative Director, prose analysis, Music DJ for Spotify/YouTube, CYOA choices, and more. Add only the agents you want to each chat, or create/import custom agents.

Prompt Engineering

Preset system with drag-and-drop prompt ordering, lorebooks with keyword triggers, an AI lorebook maker, world info inspector, regex scripts, and a macro/template system.

Connections & Providers

OpenAI, Anthropic, Google Gemini, Google Vertex AI, OpenRouter, NanoGPT, Mistral, Cohere, Pollinations, Stability AI, Together AI, NovelAI, ComfyUI, SD Web UI, Draw Things (Apple Silicon, Metal + Apple Neural Engine), and custom OpenAI-compatible endpoints. API keys are encrypted at rest with AES-256. Per-chat connection overrides.

Export & Data

Export individual chats or bulk transcript zips as JSONL or plain text. Fully local file-native storage — all data stays on your machine. No account required.


Documentation

Document Description
docs/INSTALLATION.md Installation guide index (all platforms)
docs/CONFIGURATION.md Environment variables and .env reference
docs/IMAGE_GENERATION.md Image provider setup, style profiles, and prompt cleanup
docs/EXTENSIONS.md Extension folder manifests, package format, and examples
docs/TROUBLESHOOTING.md Common issues and fixes
docs/FAQ.md Frequently asked questions (LAN access, etc.)
docs/MACROS.md Prompt macro syntax, including weighted random choices
docs/PROFESSOR_MARI.md Built-in assistant capabilities, limits, and safety notes
docs/FRONTEND.md Frontend architecture, components, hooks, and API reference
docs/ARCHITECTURE_MAP.md Code ownership map and module-boundary refactor groundwork
android/README.md Android Termux bootstrap + WebView shell guide
CONTRIBUTING.md Contributor workflow, validation, versioning, and release steps
CHANGELOG.md Release notes
CLAUDE.md Maintainer notes for contributors using Claude

Community & Support


Contributors

Marinara Engine contributors

Made with contrib.rocks.


License

AGPL-3.0

Extension points exported contracts — how you extend this code

MemoryRecallEmbeddingSource (Interface)
(no doc) [4 implementers]
packages/server/src/services/memory-recall.ts
ChatMessageProps (Interface)
Props for a single rendered chat message, including optional scene fork actions.
packages/client/src/components/chat/ChatMessage.tsx
CombatAttack (Interface)
(no doc)
packages/shared/src/types/combat-encounter.ts
IPropertyStore (Interface)
(no doc)
win/launcher/Program.cs
PromptSelection (Interface)
* The set of values the SDK call needs from the path-selection step. Pulled * out so `chat()` reads as a straight line
packages/server/src/services/llm/providers/claude-subscription.provider.ts
NarrationSegment (Interface)
(no doc)
packages/client/src/components/game/GameNarration.tsx
CombatStatus (Interface)
(no doc)
packages/shared/src/types/combat-encounter.ts
IPersistFile (Interface)
(no doc)
win/launcher/Program.cs

Core symbols most depended-on inside this repo

push
called by 2107
packages/shared/src/utils/thinking-tags.ts
cn
called by 1444
packages/client/src/lib/utils.ts
get
called by 1034
packages/server/src/services/mari-db/mari-images.service.ts
status
called by 781
packages/server/src/services/haptic/buttplug-service.ts
set
called by 689
packages/server/src/services/professor-mari/fandom-mediawiki/cache.ts
getState
called by 468
packages/client/src/lib/tts-service.ts
where
called by 385
packages/server/src/db/file-backed-store.ts
set
called by 381
packages/client/src/components/ui/GenerationParametersEditor.tsx

Shape

Function 8,211
Interface 984
Method 742
Class 108

Languages

TypeScript98%
Python1%
Java1%
C#1%

Modules by API surface

packages/server/src/routes/game.routes.ts180 symbols
packages/server/src/services/mari-db/mari-db.service.ts169 symbols
packages/server/src/routes/generate.routes.ts137 symbols
packages/client/src/components/game/GameSurface.tsx125 symbols
packages/server/src/services/professor-mari/workspace-agent.service.ts124 symbols
packages/server/src/services/image/image-generation.ts111 symbols
packages/server/src/routes/backup.routes.ts107 symbols
packages/server/src/services/agents/agent-executor.ts96 symbols
packages/client/src/components/chat/ChatSettingsDrawer.tsx95 symbols
packages/server/src/db/file-backed-store.ts91 symbols
packages/server/src/services/llm/providers/openai.provider.ts87 symbols
packages/client/src/components/chat/HomeProfessorMariChat.tsx87 symbols

For agents

$ claude mcp add Marinara-Engine \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact