Bebop v0.3.5|Free & Open Source Core (AGPL-3.0)|GitHub →

The campaign CMS for technical content teams.

Plan multi-day launches in Markdown. Automatically format, schedule, and cross-publish across Hashnode, Dev.to, Beehiiv, Bluesky, and Mastodon with canonical URLs intact.

docker compose up -d • Postgres • Redis • No vendor telemetry

BEBOP ORCHESTRATOR/campaign: q3-infrastructure-launch
Release Sequence
DAY 01DISPATCHED
01-vision-and-core.md
Hashnode • Dev.to • Bluesky
DAY 02 (ACTIVE)READY
02-distributed-queue.md
All 4 destinations queued
DAY 03PENDING
03-latency-benchmarks.md
Scheduled for Thu 14:00
Engine Pipeline
Canonical URLs are computed from your primary blog domain and verified before dispatch.
Markdown UTF-8
FILE: content/campaigns/02-distributed-queue.mdraw source
---
title: "Inside the Distributed Content Queue"
canonical_url: "https://acme.dev/blog/distributed-queue"
tags: ["architecture", "devrel", "queues"]
targets:
  hashnode: { canonical: true, draft: false }
  devto: { series: "Q3 Launch", canonical: true }
  beehiiv: { newsletter_template: "deep-dive" }
  bluesky: { thread_split: "headings", max_posts: 4 }
---
## Why Cross-Posting Breaks Technical SEO
When technical teams publish to Dev.to, Hashnode, and corporate blogs without automated canonical headers, Google splits page rank across scrapers. Bebop injects verified canonical tags directly into each platform payload...
Branch: feat/launch-contentAST parser: OK • Word count: 1,420
Destination PayloadsClick to inspect

Built for the actual mechanics of technical publishing.

Buffer and Hootsuite don't understand Markdown, syntax highlighting, or canonical tags. Bebop is built specifically for developer blogs, newsletters, and launch weeks.

SEO & Distribution

Automatic Canonical URL Preservation

Cross-posting to Dev.to and Hashnode shouldn't cannibalize your primary blog's Google ranking. Bebop automatically compiles and verifies canonical link headers across every platform payload.

Payload Target: Dev.to APICanonical Verified
// Auto-injected destination frontmatter
canonical_url: "https://yourdomain.dev/blog/launch"
published: true
series: "Release Week 2026"
Social & Federated

Markdown Thread Splitting

Turn deep technical articles into native Bluesky and Mastodon threads without manual copy-pasting. Splits on headings and paragraphs while maintaining context.

Bluesky: AT Protocol Post 1/3284 / 300 chars
Mastodon: Status with CW tags410 / 500 chars
Campaign Architecture

Campaign-First Rollouts

Launches are multi-day sequences, not isolated blog posts. Coordinate announcement posts, deep-dives, benchmark releases, and newsletter recaps in one graph.

01. Announcement Blog✓ Live
02. Architecture Deep Dive• Active
03. Newsletter Recap (Beehiiv)Scheduled
Reliability & Queues

Automated Retry Queue & Rate Limiting

Third-party platform APIs fail, timeout, and hit rate limits unpredictably. Bebop's queue worker handles automated backoff, token refreshing, and failure alerting.

Publishing Queue WorkerWorker ID: pub-worker-01
Active Queue: 0 backlogRetries: 0 errorsStatus: Healthy

From local Markdown to multi-channel dispatch.

A single deterministic pipeline that connects your drafts, editorial reviews, and destination APIs.

01

Compose in Markdown

Write in standard Markdown with YAML frontmatter. Organize your launch assets, code snippets, and release timeline together.

02

Inspect Payload Diffs

Preview exact platform adaptations before publishing: Hashnode drafts, Dev.to canonical headers, Beehiiv email templates, and Bluesky thread splits.

03

Automated Dispatch & Retries

Publish immediately or queue across coordinated release windows. Background workers handle API retries, rate limits, and status monitoring.

Two editions. Complete sovereignty. Zero lock-in.

Host the GNU AGPLv3 core on your own infrastructure, or launch on Bebop Cloud for managed real-time collaboration and edge delivery.

GNU AGPLv3 Core

Bebop Community Edition

Self-host on your own VPS, Docker container, or private cloud. Full sovereignty over your PostgreSQL data, secrets, and outbound network.

// Run locally in 30 seconds
$ git clone https://github.com/ddri/bebop.git
$ cd bebop && docker compose up -d
100% Free Forever under GNU AGPLv3 license
PostgreSQL schema with Prisma • Bring your own DB
Zero telemetry, zero cloud pings, strict privacy by design
Full access to source code, REST endpoints, and custom adapters
Managed Cloud Beta

Bebop Cloud

For technical content teams and marketing squads who want an instant collaborative workspace with zero ops overhead.

// Fully Managed Architecture
• High-speed global edge distribution
• Managed Postgres + automated backups
Zero server ops • We manage uptime, updates, and DB backups
1-click verified OAuth for Hashnode, Dev.to, Bluesky, Mastodon
Real-time collaborative co-authoring & live team presence
Encrypted token vault & continuous platform API adapter updates
Request Cloud Access→Onboarding weekly cohorts
Architecture & Technical FAQ

Engineered for transparency. Built to inspect.

How Bebop compiles, queues, and dispatches your technical campaigns under the hood—and answers to common questions from engineering and DevRel teams.

System Architecture Overview
Idempotent WorkersAST-Native
STAGE 01

Git / Markdown Drafts

Source & Campaign Graph

  • ›Standard .md / .mdx + YAML
  • ›Multi-post release timeline
  • ›Local or multiplayer editor
STAGE 02

Bebop AST Compiler & Canonical Engine

Transform & Verification

  • ›Remark / Rehype AST transforms
  • ›Live canonical_url verifier
  • ›Semantic social thread splitter
STAGE 03

Postgres + Redis BullMQ Worker

State & Resilient Queue

  • ›PostgreSQL 15+ (Prisma ORM)
  • ›BullMQ scheduled dispatch
  • ›Auto-backoff & rate-limit guard
STAGE 04

Destination Adapters

Multi-Channel Syndicate

  • ›Hashnode & Dev.to GraphQL/REST
  • ›Beehiiv newsletter payloads
  • ›AT Proto (Bluesky) & Mastodon
Targets: Hashnode • Dev.to • Beehiiv • AT Proto • MastodonEncryption: AES-256-GCM / Cloud KMS
Zero outbound telemetry in Community Edition

Frequently Asked Questions

6 technical specifications
PositioningHow does Bebop differ from Ghost, WordPress, or Buffer?

Ghost and WordPress are monolithic publishing destinations designed to host a single publication, while Buffer is built to schedule short social blurbs. Bebop is a multi-channel campaign orchestrator engineered specifically for technical content. It understands Markdown ASTs, fenced code blocks, semantic thread splitting, and cross-posting with canonical SEO URLs intact—Bridging your primary engineering blog, developer communities, newsletters, and federated social networks in a single release graph.

IntegrationCan I use Bebop alongside my existing Astro, Next.js, or Hugo blog?

Yes—that is one of the most common workflows. Your Git-backed static site (Astro, Next.js, Hugo, Eleventy, or Fumadocs) remains the primary canonical source of truth on your domain. Once your primary post is live, Bebop verifies the live canonical URL and automatically syndicates adapted payloads to Dev.to, Hashnode, Beehiiv, Bluesky, and Mastodon with `canonical_url` headers pre-populated so search engines credit your main domain.

LicensingWhat does the GNU AGPL-3.0 license mean for my team and content?

Your content, Markdown files, custom workflows, and campaign analytics belong 100% to you with zero restrictions. Using Bebop internally within your company or team—whether on a private VPS or Bebop Cloud—does not require you to open-source your blog, website, or proprietary adapters. The GNU AGPL-3.0 copyleft provisions only apply if you modify Bebop's core source code and offer that modified CMS to third parties as a hosted network service.

Self-HostingWhat is required to self-host Bebop Community Edition?

Bebop Community Edition deploys via a single `docker compose up -d` stack containing the Node.js/Bun web and worker runtime, PostgreSQL 15+ for relational state, and Redis for the BullMQ scheduling and retry queue. The entire stack idles under 350MB of RAM and runs comfortably on any $5–$10/month VPS (Hetzner, DigitalOcean, Fly.io, Railway) or internal Kubernetes cluster.

SecurityHow are platform API keys and OAuth tokens secured?

In Self-Hosted mode, third-party API keys and OAuth refresh tokens never leave your infrastructure; they are encrypted at rest in your PostgreSQL instance using AES-256-GCM derived from your local environment secret key. In Bebop Cloud, credentials are encrypted via an isolated KMS-backed secret vault with strict per-workspace key rotation and scoped least-privilege access during worker execution.

ExtensibilityCan I write custom destination adapters?

Yes. Every publishing target in Bebop implements a clean, modular TypeScript `DestinationAdapter` interface (`validateConfig`, `compilePayload`, `publish`, and `getStatus`). You can easily author custom adapters for internal Slack/Discord launch notifications, Discourse forums, custom webhook pipelines, or proprietary enterprise CMS endpoints.

Request access to Bebop Cloud.

Want managed multiplayer sync, automated background publishing, and zero server maintenance? We're onboarding technical teams in weekly cohorts. (Prefer to self-host? Grab the open source core on GitHub).

No spam. Your email will strictly be used for your invitation.