All docs

Overview

rsopshub banner

RsOpsHub is the operating system for content and work. It is a self-hosted, single-owner workspace that pulls everything an indie operator, technical founder, or content-heavy team relies on into one place: drafted and published posts across Reddit / Hacker News / dev.to, blog drafts and analytics, project work in Linear, documents from Notion and Google Docs, spreadsheets from Drive, daily work logs, and a unified calendar that includes Google Meet meetings created right from the app. There is no public sign-up, no third-party SaaS sitting between you and your data, and no per-seat pricing. You install it once, point your integrations at it, and from then on your daily ops live inside one editorial-looking app you fully control.

The problem it solves

Most of the people I built this for already have a working stack — Notion for docs, Google Drive for spreadsheets and slides, Linear for engineering tickets, Reddit and Hacker News for community work, dev.to or a blog for writing, a Google calendar for meetings, and a notebook (literal or in their head) for daily todos. Each one is fine in isolation. Combined, they cost you twenty minutes a day just switching tabs, copying URLs, refreshing dashboards, and reconstructing yesterday's work for today's standup. RsOpsHub fixes that by mirroring the data you care about into one Postgres database, rendering it inside a single fast UI that knows your shape, and writing back to the source provider when it makes sense (creating a Linear issue, scheduling a Meet, archiving a sheet) so the original tools stay the system of record.

Who it's for

The single-owner shape is deliberate. There is exactly one owner per deployment, defined by OWNER_EMAIL + OWNER_PASSWORD in your environment. You then invite as many viewers as you want with a 16-character access code per workspace. Owners have full read / write; viewers are read-only by design. The model fits four shapes especially well:

  • Solo operator running their own startup, content brand, or side project who wants every signal in one place.
  • Founder + team where the founder owns ops and the team needs visibility into roadmaps, content cadence, and shipping rhythm without write access.
  • Agency lead who needs to share progress with clients in a clean read-only view per client (one workspace per client).
  • Internal tooling for a small team that doesn't want to pay enterprise tier prices on five different SaaS dashboards.

If you need multi-owner editing with role-based permissions, RsOpsHub is not the right tool — it intentionally trades the complexity of a multi-tenant identity system for the simplicity of one trusted owner.

The mental model

The application is organised around the workspace. A workspace is a self-contained world with its own access code, viewer roster, integration credentials, and data: every content record, task, work log, document, spreadsheet, calendar event, Linear issue, and notification belongs to exactly one workspace. Nothing is shared across workspaces — not even integrations — so you can run an "Acme client" workspace next to a "Personal" workspace and a "Side project" workspace and they never bleed into each other. The owner navigates between workspaces from the sidebar's workspace switcher; viewers see only the workspaces they have an active join for.

Within a workspace, the navigation maps to the way most operators actually think about their day: Home as the quick-glance dashboard, Content as the publishing log, Tasks as the local + Linear backlog, Work as the daily journal, Calendar as the unified time view, Documents and Sheets as the file mirrors, Analytics as the trend view, and Notifications as the inbox for everything that wants your attention. Each section is one page; you never have to drill three levels deep.

What's in a workspace

SectionPurpose
HomeToday's focus + activity heatmap
ContentReddit / HN / dev.to posts and comments + blog records
TasksLocal tasks alongside synced Linear issues
WorkDaily work log with AI-generated summaries
CalendarMonth / week view of scheduled + published content
DocumentsLocal notes + mirrored Notion pages + Google Docs
SheetsLocal files + Google Sheets
AnalyticsPer-platform charts + a Tasks shipped trendline
NotificationsIn-app inbox for Linear, Google share offers, internal events
SettingsIdentity, access code, viewer joins, integration IDs
IntegrationsPer-workspace API keys + sync controls

Feature tour

Home

Personalised greeting, four KPI cards (Published, Scheduled, In draft, Impressions), today's focus list combining local tasks and Linear issues you own, a Meetings widget that lists upcoming Google Meet events with one-click Join links, a recent activity feed enriched with the actual content / task title (not just "Created a task"), and a year-long heatmap of work intensity computed from your task completions, Linear closures, and content publishes. The Meetings widget is also the entry point for creating a new Google Meet straight from the app — pick a time, invitees, optional description, and the event lands on your primary calendar with a Meet conference attached.

Content

A single editorial dashboard for every piece of content you have ever shipped. The Content page consolidates Reddit posts and comments (via your handle), Hacker News submissions and replies (via your handle), dev.to articles (full markdown body, page views, reactions, comments, organisation publication — pulled with your API key when available), and any other blog posts you add manually. You can switch between a sortable table view, a kanban board grouped by status (Idea / Draft / Scheduled / Published / Archived), and a calendar view that overlays content with meetings. Every row is editable: titles, status, body, tags, manual metrics. The integration sync is non-destructive — your manually-entered share counts on a public dev.to article are never overwritten by a refresh, because the API doesn't surface that field anyway.

Tasks

A two-tab layout. The Local tasks tab is a fast keyboard-driven list of tasks you've typed in yourself, with priority, due date, and status. The Linear tab is a synced view of your Linear issues with full board / list toggle, status filters, sub-issue navigation, comment threading with @-mention, and a side panel that mirrors Linear's own editor. Owners can create, edit, comment, archive, and template-save without leaving the app; viewers see the same data read-only so they can follow along.

Work tracker

A daily journal that combines a free-form summary, structured metrics (tasks shipped, content published, Linear closed, hours logged), and the heatmap. Each day's entry is generated automatically at 23:55 local time using OpenAI (if OPENAI_API_KEY is set) summarising the activity, but you can always type your own version — manual summaries are never overwritten by the cron. The auto-fill button reconstructs the day's metrics from the actual data on demand.

Calendar

Month or week view (toggle on the calendar page; the content page keeps month-only). Each day cell shows up to three content chips and two meeting chips, with overflow links and click-to-expand. Meetings come from Google Calendar (via OAuth); content comes from your publishing schedule. Owners can create new Google Meet calls; viewers can join existing ones.

Documents

Local rich-text notes, mirrored Notion pages, and Google Docs files side-by-side. Notion content is fetched on-demand and rendered inline (no need to switch tabs). Google Docs open inside an iframe using the /preview URL so viewers don't get stuck on Google's sign-in wall. Owners can pre-grant viewer access per document with a toggle.

Sheets

Local CSV / XLSX uploads (validated by mime + magic-bytes), Google Sheets via OAuth, plus any sheets shared with the connected Google account that surface as claim-able offers. Per-sheet share toggle works the same way as documents.

Analytics

Time-series charts per platform (impressions, upvotes, comments) plus a tasks-shipped line that merges local task completions with Linear issue closures. The date filter controls every chart at once.

AI assistant

A conversational layer over the whole app, launched from a floating button in the bottom-right (or ⌘/Ctrl + J). Tell it what you want — "add a task to prepare the Q3 investor update by next Friday", "show me analytics for the last three days", "turn on hour tracking" — and it executes the action, renders the result inline (task cards, charts, confirmation prompts), and only asks a follow-up when something genuinely can't be inferred. It's built on CopilotKit + AG-UI with a fully custom UI that matches the product, and it's owner-only since every action it can run is owner-gated. See AI Assistant for the architecture and how to extend it.

Notifications

A unified inbox for inbox-worthy signals across sources: Linear (assigned to you, status changed, mentioned), Google Docs / Sheets shared-with-me offers, internal viewer joins, system messages. Each row deep-links into the in-app view so a Linear notification opens the issue's side panel inside Tasks, not Linear's web app. Owners can mark read / unread / read-all.

Profile

Owners set a display name and avatar that viewers see at the top of /access and inside the sidebar of every workspace. Workspace list is presented with logos / emoji marks, click-to-open. Viewers always know whose hub they're inside.

Settings

Per-workspace identity (name, logo, slug, color, description), access code rotation, viewer roster with add / remove, integration IDs (Notion parent page, Google folder), and a Danger zone that demands the owner password before deleting a workspace.

Integrations

Per-workspace credentials for the providers that need it (Linear API key, dev.to API key, Google OAuth, dev.to / HN / Reddit handles). Global env-driven credentials for what's truly shared (Notion token, Google OAuth client, OpenAI key).

How it compares

The closest products in this space cluster around three shapes. Generic workspaces (Notion, Coda, ClickUp) are great at storing documents and tables but treat third-party syncs as a paid bolt-on and don't have first-class concepts for content distribution or daily operations. Productivity hubs (Sunsama, Akiflow, Motion) wrap your tasks and calendar into one nice timeline but have no story for Reddit / Hacker News / dev.to / Linear content tracking, no analytics, and no read-only viewer mode. Content tracking SaaS (Buffer, Hypefury, Typefully, Publer) handle social posts well but stop at the publish button — they don't carry the data back into a place you can analyse alongside your work log or share with stakeholders.

RsOpsHub sits at the intersection. The table below shows the comparison at a glance; each column is "yes / partial / no" rather than a feature list because the actual differences are about whether the workflow exists end-to-end, not whether a half-implementation of it ships.

CapabilityRsOpsHubNotionClickUpSunsama / AkiflowBuffer / Typefully
Reddit / Hacker News post mirroring with metricsyesnononono
dev.to article mirroring with page viewsyesnononopartial
Linear two-way sync (issues, sub-issues, comments)yespartialpartialnono
Notion document mirroringyesnativepartialnono
Google Docs / Sheets in-appyespartialpartialnono
Google Meet creation from inside the appyesnonopartialno
AI-written daily work logyesnonopartialno
Read-only viewer mode (one-click invite)yespartial (paid)partial (paid)nono
Per-workspace integration credentialsyesnononono
Self-hosted, no per-seat pricingyesnononono
Data stays in your own Postgresyesnononono

The reason none of the competitors cover all of these is structural, not laziness. SaaS products have to support every customer with one credential pool, so they can't let you connect a different Linear API key per workspace. They also have to monetise per seat, so a read-only viewer either costs the same as an editor or doesn't exist. RsOpsHub gets to skip both constraints because it's single-owner and self-hosted — the same architecture that limits it to one operator is what lets it ship the features that the SaaS products can't.

The trade-offs

Honesty section. RsOpsHub is intentionally single-owner: there is no multi-tenant identity layer, no SSO, no row-level permissions inside a workspace beyond "owner / viewer". If you outgrow that, you outgrow the tool. It is also self-hosted: you bring your own Postgres, your own host, your own OAuth client. There is no cloud version, no marketplace, no plug-and-play install. And it's a personal-scale app — the in-memory rate limiter, the in-memory token cache, and the in-memory cron all assume a single server instance per deployment, which is the right shape for almost all individual operators and small teams but the wrong shape for genuinely high-traffic workloads.

How to get access

RsOpsHub is not available as a public download or a hosted SaaS. To get a deployment running for yourself or your team, reach out to the author Rohan Sharma at rohansrma.vercel.app — include a sentence on what you'd use it for and the size of your team, and you'll get the codebase, a setup walkthrough, and ongoing support.

If those trade-offs are fine and you've got access, keep reading. The Setup guide gets you from a clone to a running local dev server in under ten minutes.