Skip to content

Developers

A CMS you can read, script and extend.

Ask any page for its JSON-LD, drive the site from an agent or the API, and write plugins in Go that run in a sandbox.

PluginGo, compiled to WASM
func init() {
	guest.OnAction(sdk.EntityPublished, func(ev sdk.EntityEvent) error {
		guest.Log(guest.LogInfo, "published "+ev.Slug)
		return nil
	})
}

//go:wasmexport on_entity_published
func onEntityPublished() int32 { return guest.Run(sdk.EntityPublished.Export()) }

Extending most CMSs means running other people's code with full access.

A plugin that can read your database and write your files is a risk you take on trust. Hatamoto plugins run in a sandbox and change content through runs and changesets.

What you get

  • Go plugins in a sandbox

    Plugins compile to WASM and call the site only through the host functions their manifest allows.

    Plugin overview
    Plugin SDK
  • Hooks for content events

    React to entity.created, entity.updated and entity.published, or filter data such as JSON-LD before it is rendered.

    Actions and filters
  • JSON-LD on request

    Send Accept: application/ld+json to a page and get its structured data as JSON.

    Content negotiation
  • MCP and a REST API

    The same site is open to agents over MCP and to your code over the API, with scoped keys.

    MCP reference
    Scoped keys
  • Changes you can review

    Plugins that write content do it through runs and changesets, not straight into the live site.

    Changesets
  • Apache 2.0

    The core is open source under the Apache 2.0 licence.

    Open source

Under the hood

  • Single Go binary

    The server, admin and updater ship together, next to PostgreSQL.

  • Plugin SDK below 1.0

    The core is at version 1.0. The plugin SDK is still below 1.0, so its API can change between releases.

  • Isolated plugin storage

    Each plugin gets its own database role, with no access to core tables or to other plugins.

Read next

  • Build

    AI agents and MCP

    Let agents draft and publish under your rules.

    Read more
  • Run

    Security

    No /wp-admin for bots to find.

    Read more

Build on Hatamoto

Install it and read the plugin overview.

Install Hatamoto