Ecosystem Roadmap

Four Projects,
One Philosophy

Self-hosted. User-owned. Zero dependencies. Chirm, Deep, Perch, and Flock form a three-tier ecosystem where the answer to "who has power?" is always the participants.

Chirm · Community Chat
Deep · Scaled Infrastructure
Perch · Blog & Identity
Flock · Proximity Exchange

The Ecosystem

Three tiers of infrastructure — community, personal, physical — each removing one dependency so participants hold the power at every layer.

Tier 1 · Community

Chirm Main

Community Chat

Channels, voice, files. A single binary on a Raspberry Pi. Your server, your community. Removes the corporate platform.

Single ~15MB Binary SQLite Pi / VPS
Tier 1 · Community

Chirm Deep

Extended Infrastructure

Same space with more capacity. SFU voice, Signal Protocol, server-side transcoding, optional PostgreSQL. Binary-swap upgrade from Main.

SFU + Services SQLite or PG VPS / Dedicated Double Ratchet Algorithm
Tier 2 · Personal

Perch

Blog & Identity

Your blog, your profile, your portable identity. Self-hosted with automated DDNS and TLS. Removes the admin from your identity.

Single ~15MB Binary SQLite Pi / VPS
Tier 3 · Physical

Flock

Proximity Exchange

Two devices, one protocol, zero infrastructure. Bluetooth LE, WiFi Direct, or future transports. Removes the internet itself.

Mobile App BLE / WiFi Direct On-Device
Design Philosophy

The Inversion

Instead of servers talking to servers, the Chirm ecosystem puts users at the centre. Identity is self-hosted and portable. Communication routes directly. Discovery happens through proximity and participation, not algorithmic amplification.

Product Dependency Removed Sovereignty Gained Trade-off Accepted
Chirm Main Corporate platforms Community ownership Self-hosting ops
Chirm Deep Hardware limitations Scaled capacity Heavier infrastructure
Perch Server admin control Identity + content portability Always-on for DMs
Flock Internet connectivity Physical-layer exchange Active app, range limits
Tier 1 · Community

Chirm Main

Phases 0–5 · Single Binary · Pi-Aligned

The community layer. Six phases taking Chirm from a functional baseline to a polished, extensible, themeable platform with a bot framework and rich media plugins.

Phase 0

Polish & Stability

v0.9.1 Critical 2–3 weeks

User-facing quality before structural changes. Highest ROI — shapes every new user's first impression.

UX Improvements
Scroll position preservation per channel via extended cache.js
Per-channel unread counts with last-read timestamps and badge indicators
Image lightbox with fullscreen overlay, zoom, pan, and navigation
Mobile responsive breakpoints replacing hardcoded sidebar widths
Skeleton loaders, upload progress bars, inline error messages
Bug Fixes
Rate limiter memory leak — periodic eviction for stale entries
WebSocket reconnection gaps — delta fetch on reconnect
Voice room ghost cleanup via heartbeat/ping-pong with timeout
Upload race condition — immediate cleanup + hourly orphan sweep
Phase 1

Harden & Document

v0.9.5 Critical 3–4 weeks

Security audit, documentation, and testing foundation. The gate before external contributors and the safety net for Phase 2's refactor.

Security Audit
Authenticated file serving with JWT validation and signed URLs
CSRF protection, WebSocket channel permission checks on subscribe
Security headers: CSP, X-Frame-Options, HSTS. SSRF audit
JWT refresh tokens with short-lived access and rotation
Password policy, lockout after failures, optional TOTP 2FA
Documentation & Testing
Go doc comments, frontend JSDoc with type annotations
Architecture Decision Records, CONTRIBUTING.md, full API reference
80%+ test coverage on critical paths. CI with GitHub Actions
Phase 2

Architecture Refactor

v1.0.0 High 6–8 weeks

The structural work that enables everything else. The v1.0.0 tag signals API stability — the foundation the entire ecosystem builds on.

Backend Modularity
Split monolithic db.go into domain files with versioned migrations
Plugin interface with OnMessage, OnJoin, OnLeave, RegisterRoutes hooks
Event bus decoupling handlers from Hub via pub/sub
Database abstraction layer — SQLite for Main, PostgreSQL for Deep
External auth hook — the seam Perch connects to in P2
Frontend Modernization
ES module split with native browser imports — no build tools
Auto-escaping tagged template components for XSS prevention
Proxy-based reactive state store for targeted re-renders
API Stability
/api/v1/ prefix with structured errors and documented codes
WebSocket protocol versioning for negotiation and backward compat
Phase 3

Theming Engine

v1.1.0 High 3–4 weeks

Chirm's 30+ CSS variables make this lower-effort than starting from scratch. The JSON theme format defined here is shared with Perch — one format, two products.

Theming
~30–40 documented CSS theme variables as the public API
JSON theme format: dark, light, AMOLED, high contrast. Custom import
Server default + user override. Live editor with color pickers
Custom CSS injection point for admins (sanitized)
User Settings
Font size, message density, timestamp format, notification sounds
Accessibility: reduced motion, high contrast, larger click targets
Phase 4

Media Plugins

v1.2.0 Medium 5–7 weeks

First test of Phase 2's plugin architecture. Each plugin is optional and toggleable. Main keeps them lightweight — heavy transcoding stays in Deep.

Plugins
Video player with seeking, speed, PiP, fullscreen. Pure Go thumbnails
In-browser voice recording via MediaRecorder with waveform visualization
PDF thumbnails, code highlighting, markdown preview with expand/collapse
Shared Infrastructure
Per-channel media gallery, chunked uploads with resume
Admin storage dashboard with per-user quotas
Phase 5

Bot Framework

v1.3.0 Medium 5–6 weeks

Built-in management bot plus external integration API, designed for Main's single-process model.

Built-in Bot
Moderation commands: /mute, /kick, /ban, /purge, /slowmode
Utility: /poll, /pin, /remind, /serverinfo. Welcome automation
External API
Bot tokens with scoped permissions. Incoming + outgoing webhooks
WebSocket gateway with rich event stream and interactive messages
Optional Lua/JS sandbox script runner with execution limits
Tier 1 · Scaling

Chirm Deep

Phases D1–D2 · Extended Infrastructure · The Scaling Layer

Deep extends Main for workloads exceeding Pi-class hardware. It imports Main as a dependency and adds service layers. Migration is a binary swap — same data directory, same config, same database.

D1

SFU Voice & Video

d0.1.0 High 6–8 weeks

Replace P2P mesh with a Selective Forwarding Unit for rooms beyond 5–6 participants.

Core
Pion SFU: pure Go, embedded as a goroutine. No separate process
Auto topology switching: P2P mesh for 1–4, SFU promotion at 5+
Simulcast with multiple quality tiers per receiver
Optional server-side recording with per-room consent UI
Bundled TURN for NAT traversal. 25–50 concurrent per room on 4-core VPS
D2

Extended Media Processing

d0.2.0 Medium 4–5 weeks

Heavy media operations requiring ffmpeg and sustained CPU.

Media Pipeline
Async video transcoding to WebM/H.264 with job status tracking
Adaptive streaming: 360p/720p/1080p via HLS or DASH
Audio normalization and server-side thumbnail generation
PostgreSQL option with auto-detection via config
Tier 2 · Personal

Perch

Self-Hosted Blog · Portable Identity · The User Layer

Where Chirm creates community spaces controlled by admins, Perch creates individual spaces controlled by users. A self-hosted blog and identity platform that stands alone as a publishing tool and integrates with Chirm for those who choose it.

Same DNA as Main: Single Go binary, SQLite, embedded assets, runs on a Pi
Identity belongs to the user: Chirm servers display your profile but don't own it
No server-to-server protocol: Perch instances talk directly via lightweight APIs
Content is portable: Posts are self-contained documents. Source goes offline, your copy persists
Reachable by default: Built-in DDNS and TLS automation for public access
Always optional: Chirm works without Perch. Mixed communities are first-class
P1

Core Platform

p0.1.0 High 6–8 weeks

Standalone blog and identity platform, valuable before any Chirm integration. Ships with all infrastructure plumbing needed for P2 and P3.

DDNS & Public Reachability
First-run wizard for subdomain selection with DDNS auto-registration
Auto-TLS via DNS-01 challenge — works without opening port 80
UPnP auto-config with fallback to clear manual port-forward instructions
DuckDNS as default; bring-your-own-domain via Cloudflare
Blogging Engine
Markdown editor with live preview. Draft/publish workflow
Post formats: short-form, long-form, media gallery. Tumblr-style versatility
Hierarchical tags, custom pages, reusable JSON theme format from Chirm
Identity & Messaging Foundation
Profile: display name, avatar, bio, links — the canonical source Chirm pulls from
Scoped API keys: read-only for profiles, write for DMs, admin for full control
Email-format messages over HTTPS (RFC 5322 structure, no SMTP daemon)
Asks: public inbound messages with configurable access tiers
P2

Chirm Bridge

p0.2.0 High 4–6 weeks

Connecting Perch identities to Chirm servers. Requires Chirm Main v1.0.0 for the external auth hook.

Authentication & Profile
OAuth-style handshake: "Connect with Perch" on Chirm login page
Scoped permissions with one-click revocation from Perch dashboard
TTL-based cached profile pull with offline resilience
Multi-Server Hub
Server list storing all connected Chirm servers with status indicators
Unified notification feed aggregating across servers
Quick switcher and cross-server bookmarks stored in Perch's DB
P3

Social Layer

p0.3.0 Medium 6–8 weeks

Perch-to-Perch communication. Blog platform becomes social network without central infrastructure.

Direct Messages (E2EE)
Blog-to-blog routing via HTTPS APIs — no Chirm server involved
X25519 key exchange, Double Ratchet for forward secrecy
Asynchronous by design: sender queues with backoff if recipient offline
Dual storage on both sides. No single point of failure
Content & Feeds
Reblogging with provenance chain and source-independent persistence
RSS/Atom native: following is subscribing to a feed. OPML export
Built-in chronological aggregator. No algorithm — newest first
Tier 3 · Physical

Flock

Proximity Exchange · No Internet · The Physical Layer

Two devices exchange data over radio. No server, no connection, no account required at the moment of exchange. The entire network is people in the same physical space.

Zero infrastructure: Two radios and consent. Nothing else
Works without Perch: Data stays on-device. Perch sync is an enhancement
Transport-agnostic: BLE, WiFi Direct, LoRa, USB — same protocol, any transport
Relays are caches: No authentication, no moderation power, no identity authority
F1

Core Exchange

f0.1.0 Medium 6–8 weeks

Mobile app with device-to-device exchange. The protocol is defined at the logical layer, independent of physical transport.

Exchange Protocol
Discovery, handshake, mutual consent, payload manifest exchange
BLE for small payloads; auto-promotion to WiFi Direct for larger files
Bandwidth negotiation per transport — adapts to what the transport can carry
Payload Types
Profile cards: name, avatar, bio, Perch URL, public key. Swap by walking past
Post seeds: carry 1–2 recent posts. Content that travels at walking speed
File drops: music, zines, arbitrary files. Signed with Perch key
On-Device
Collection inbox for the day's exchanges. Browse, save, discard
Perch sync: cards become contacts, posts land in "found in the wild" feed
F2

Relays & Extended Range

f0.2.0 Low 4–5 weeks

Optional infrastructure for extending Flock's reach beyond direct proximity.

Relay Devices
Pi or old phone at a venue collects and redistributes payloads passively
Configurable capacity, TTL, and content type filtering
Venue use: cafés, conferences, coworking. Social nexus without a server
Future Transport Bindings
LoRa / mesh radio: long range, constrained to profile cards
NFC tap: single-contact card swap. Lowest friction
USB / physical media: sneakernet as a first-class transport binding

Indicative Timeline

Solo developer pace. Sequencing matters more than dates. Perch P1 and Chirm Phase 2 develop in parallel as separate codebases sharing architectural patterns.

Q1 2026

Stable, Secure, Documented

Chirm Main Phases 0 + 1. Polish the user experience, harden security, build the testing foundation and documentation that gates external contributions.

Phase 0 Phase 1 v0.9.1 → v0.9.5
Q2 2026

v1.0.0 + Perch Standalone

The pivotal quarter. Chirm Phase 2 delivers the architecture refactor and v1.0.0 API stability. Simultaneously, Perch P1 begins as a separate codebase. Deep enters design phase.

Phase 2 P1 begins Deep design v1.0.0
Q3 2026

Theming + Chirm Bridge

Chirm Main gets theming and media plugins. Deep D1 delivers the SFU. Perch ships P1 and begins the Chirm Bridge. Flock protocol spec starts.

Phase 3 + 4 D1 (SFU) P1 + P2 Flock spec
Q4 2026

Bots + Social + Proximity

The ecosystem comes together. Chirm Main Phase 5 delivers the bot framework. Deep D2 adds transcoding. Perch P3 enables social features. Flock F1 ships the core exchange.

Phase 5 D2 P2 + P3 F1
2027+

Full Ecosystem Operational

Polish, maintain, and grow. Perch P3 evolves its social layer. Flock F2 adds relays and future transport bindings. Community contributions expand the plugin ecosystem.

Polish P3 growth F2 + bindings

The Stack

Every layer answers the same question differently:
what stands between the user and their goal, and how do we remove it?

Chirm removes the platform.
Deep removes the constraint.
Perch removes the admin.
Flock removes the internet.

No product requires any other. Each ships value independently. Together they form a three-tier ecosystem where at every layer the participants have the power and nobody else does.