goloom
MIT · single binary · SQLite by default

Schedule one post
across every account.

Mastodon's built-in scheduler covers one account on one server. goloom schedules and publishes across all of yours — Mastodon, Bluesky and Friendica — from one queue and calendar you host yourself. Single Go binary, SQLite by default, full REST API.

goloom — quickstart
# One static binary — no Docker, no external database
$ ENCRYPTION_KEY=$(openssl rand -hex 32) \
    BOOTSTRAP_ADMIN_TOKEN=change-me \
    ./goloom

# UI + API on http://localhost:8080
# Prefer containers? Docker and Kubernetes work too.

One binary

UI and API run in a single Go process. SQLite by default — no external database to operate. Switch to PostgreSQL when you outgrow it.

Fediverse first

Mastodon, Bluesky and Friendica today, with OAuth onboarding and per-account publishing and metrics. More networks are in progress.

Scriptable

Everything in the UI is a team-scoped REST call with bearer-token auth. A built-in MCP server lets agents drive it too — both are optional.

Teams and review

Owner, editor and viewer roles, a review queue for approvals, and a per-team audit log that attributes every action.

Features

What working in goloom looks like

Not a mockup in sight — every shot below is the real UI running on demo data.

Overview

Start the day with a clear picture

The dashboard pulls your whole workspace onto one screen — what happened, what is scheduled, and whether every account is still healthy.

  • Recent engagement across all connected networks
  • Account health with reconnect prompts before tokens expire
  • Upcoming posts with one-click access to editing
Start the day with a clear picture
Plan

Your whole month, one calendar

Every draft, scheduled and published post across all accounts lives in a single timezone-aware calendar. Move things around until the month makes sense.

  • Drag-and-drop rescheduling across accounts
  • Grid and list views for planning and triage
  • Select any post to preview it per platform
Your whole month, one calendar
Compose

Write once, tailor it per network

One draft goes to every destination — with per-account versions where the wording should differ, and live previews that show exactly what each network will render.

  • Per-account content versions and character limits
  • Live previews for every selected destination
  • Attach media once, exclude it per network if needed
Write once, tailor it per network
Measure

Know what actually worked

Engagement, follower trends and per-post metrics are synced from every network into one report — no external analytics service, no tracking pixels.

  • Likes, reposts and replies aggregated across providers
  • Follower trend and 30-day metric history
  • Per-post, per-account and hashtag breakdowns
Know what actually worked
Collaborate

Four eyes before it goes out

Automation drafts and team posts can route through an approval step. Editors propose, owners approve — and the audit log remembers who did what.

  • Review queue for automation and RSS drafts
  • Owner, editor and viewer roles per team
  • Every action attributed in the team audit log
Four eyes before it goes out
Automate

Keep channels alive on autopilot

Recurring templates and RSS rules produce posts on schedule, so the channels stay active while you do something else.

  • Weekly and monthly recurring post templates
  • RSS feeds turned into drafts or scheduled posts
  • Optional AI enhancement in your team’s brand voice
Keep channels alive on autopilot
Start the day with a clear pictureYour whole month, one calendarWrite once, tailor it per networkKnow what actually workedFour eyes before it goes outKeep channels alive on autopilot

And the parts you’ll appreciate later

Everything around scheduling posts to multiple accounts — and not much you have to grow into.

Built-in MCP server

A Model Context Protocol server ships in the binary, so agents can drive goloom over the same tools you use by hand.

REST API & tokens

Everything in the UI is a team-scoped /v1 call. Bearer tokens with a full lifecycle, plus a validate-before-schedule endpoint.

OIDC sign-in

Plug in your identity provider for the browser UI — Authentik, Keycloak or any OpenID Connect issuer.

Media library

A reusable per-team media library with deduplication, so images are one click away in the composer.

AI assist (optional)

Off until you wire up a provider. When enabled, drafting and enhancement follow a per-team brand voice.

Audit log & encryption

Every team action is attributed. Provider tokens are encrypted and API tokens hashed at rest.

Connected networks

MastodonFriendicaBluesky
Architecture & API

API-first by design

Every action in the UI maps to a documented API call. Run it by hand, from a script, or from an agent — same endpoints either way.

  • Single Go binary. UI and API in one process — deploy as a container or a static binary.
  • Built-in MCP server. A Model Context Protocol server is bundled and on by default, so agents drive goloom with natural-language tools.
  • REST API. Stable, team-scoped resources under /v1 (and /api/v1) with bearer-token auth and a validate-before-schedule endpoint.
  • SQLite or PostgreSQL. Zero-config by default; switch to Postgres for larger deployments.
  • Docker & Kubernetes. Run it anywhere — from a homelab box to a CNPG-backed cluster.
curl
# Validate a post before scheduling it
$ curl -X POST \
    -H "Authorization: Bearer $TOKEN" \
    https://goloom.example/v1/teams/$TEAM/posts/validate \
    -d '{"body":"Hello fediverse 👋"}'

# …or let an AI agent drive it via the
# built-in MCP server:
 https://goloom.example/mcp/

Run it yourself

One binary, one command. Your server, your data, your tokens — no account to create, nothing phoning home.

A note on this project. goloom grew out of my own needs as a self-hosted tool. It is built with heavy use of AI, and I use it as a testbed for exploring methods for efficient, AI-assisted development.