Skip to content

Extending HoloMUSH

HoloMUSH is designed to be extended through plugins. Whether you want to add a dice roller, build a crafting system, or connect to external services, the plugin system gives you the tools to do it.

Plugin Types

HoloMUSH supports two plugin systems, both built on the same event-driven model:

Type Language Best For Compilation
Lua Lua 5.1 Simple scripts, rapid iteration None
Binary Go Complex logic, external APIs Required

Both types work the same way: your plugin subscribes to events (like a character speaking or moving) and can emit new events in response. The server handles delivery, ordering, and access control.

Documentation

Getting Started

Set up your first plugin in minutes. Walks through creating a plugin directory, writing a manifest, and implementing a basic event handler.

Plugin Guide

The complete guide to building plugins. Covers Lua and binary plugin structure, manifests, host functions, world queries, ABAC policies, error handling, and best practices.

Access Control

How the ABAC policy engine works and how to write policies for your plugin. Every host function call is checked against your declared policies — this page explains how to get them right.

Implementing AttributeResolverService

For binary plugins that declare custom resource types. Documents the host contract for GetSchema and ResolveResource, load-time policy/schema validation, and common anti-patterns.

Event Reference

Event types, payload schemas, and stream patterns. Everything you need to know about the data flowing through the system.

API Guide

How the Core gRPC service works, from authentication through event streaming. Useful if you are building a custom client or need to understand the protocol layer beneath the plugin system.

Example Plugins

The plugins/ directory in the repository contains working examples you can use as starting points.