seamist

Downloads
Note: This site is still under construction. Most of the content is present and correct but there are a few issues still to correct.

Getting Started

First, you need to determine where SeaMist thinks your content root is. To do this, you can do this at the command line:

$ seamist status
SeaMist 0.3.1+09f712b

SeaMist
  Content Root: /var/lib/seamist/sites
  CLI Config:   /home/user/.config/seamist/seamist_cmd.toml
  Config Path:  /etc/seamist/config.json
  API Keys:     /etc/seamist/api-keys.toml
  API URL:      http://127.0.0.1:9149

No API key is configured for CLI API calls.
Use --api-key, SEAMIST_API_KEY, `seamist set api-key`, or `seamist new apikey --set-default-for-cli`.

Here you can see the Content Root is defined as /var/lib/seamist/sites. This is where you must create your top level site folders. Each site gets its own folder, so for example:

  • /var/lib/seamist/sites/
    • site1.example.com
    • site2.anothersite.com
    • etc

SeaMist assumes the directories here are sites.

You can change the permissions here if you need to. The only thing that needs to stay is that the seamist user needs read access to this directory tree.

Adding Content

Content lives inside .smx files. At their simplest, they contain nothing but markdown. To use the more advanced features, they need a TOML header, like so:

[meta]
title = "My First Page"

[content]
# My First Page

Here is some content.

Or if you'd prefer to use HTML:

[meta]
title = "My First HTML Page"
type = "html"

[content]
<h1>My First HTML Page</h1>

If you were to save one of these files as index.smx inside /var/lib/seamist/sites/site1.example.com you would have your default content item for the site.

You could then access it on the route / by calling the URL:

http://seamist.host:9149/api/v1/content/html?site=site1.example.com&route=/

You could also point the domain site1.example.com at the server running SeaMist (ideally behind a reverse proxy to handle HTTPS), and then access using:

https://site1.example.com/api/v1/content/html?route=/

Using the content/html endpoint gets you pure HTML output for both of the above source files. The Markdown is converted to HTML before being served.

If you want access to the metadata contained in the [meta] section, you can request

https://site1.example.com/api/v1/content/json?route=/

Which would return

{
    "meta": {
        "title": "My First Page",
        "created": "2026-06-06T14:00:00",
        "modified": "2026-06-06T14:00:00"
    },
    "content": {
        "html": "<h1>My First Page</h1>"
    }
}