惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Google DeepMind News
Google DeepMind News
博客园_首页
云风的 BLOG
云风的 BLOG
月光博客
月光博客
I
InfoQ
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
D
Docker
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
博客园 - 叶小钗
Martin Fowler
Martin Fowler
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How I Built an MCP-Native Open-Source Notion Alternative
Ranork · 2026-06-24 · via DEV Community

Ranork

I wanted my AI agents to actually own a workspace, not just peek at it. That was the whole reason this project exists. (remnus.com)

The moment that pushed me over the edge was simple. I had Notion's MCP connector set up, and it was fine when I was sitting at my keyboard asking Claude to find a page or rewrite a paragraph. Then I tried to run an agent on a schedule with no browser open, and it stopped cold. The connector wants OAuth with a person present, every single time. The docs even say it does not support bearer tokens. So my nightly job had nowhere to put a credential. That was the itch I could not stop scratching.

The one decision that shaped everything

Build MCP first, not MCP later.

Most tools add an agent connector once the product is already mature, and every seam shows. I wanted the opposite, so I made one rule and kept it. Every feature has to answer to two users at once, a human in the browser and an agent holding a token. If a feature only works for one of them, it is not done.

That rule sounds small. It changes everything downstream.

The stack, honestly

There is nothing exotic here. Next.js for the app, SQLite through Drizzle so it runs happily on serverless and on Turso, and Auth.js for Google and GitHub login. I could have picked five other things and it would not matter much.

The interesting part was never the framework. It was the contract with the agent.

The agent contract

This is where the real work went.

An agent talks to Remnus over MCP with fourteen tools, split cleanly into read and write, plus a set of resources and prompts. The read side covers search, listing the workspace, reading a page, reading a database schema, querying rows, listing members, and reading the audit log. The write side covers creating pages, updating them, bulk updates, deleting, moving items, creating databases, and changing a schema. Write tools refuse a read scoped token, so a token you handed to a reporting bot cannot quietly start editing.

There are two ways in, and that is on purpose:

  • OAuth 2.1 with PKCE for editors like Cursor and Claude that want a one click connect with a human present.

  • Scoped personal access tokens for everything headless. A cron job, a CI step, a coding agent on a server. You mint a token, give it read or write scope, and revoke it whenever you want.

Two more choices made the agent experience feel native instead of bolted on. Databases keep their fields in a JSON column, so an agent can invent a brand new schema on the fly without anyone running a migration. And every write an agent makes is recorded in an audit log you can actually read, showing which tool ran, on what, and when. When something you did not type starts changing your workspace, you want a receipt for every change, and Remnus writes one automatically.

The proof is the sample workspace

Here is the part I am proud of. The sample workspace that every new account gets was not typed by a person. An agent connected over MCP, wrote a product spec for a small Paint clone, built a task board from that spec, generated every task with its own acceptance criteria, and then moved tasks across the board as it shipped them. A human watched the whole run and could have stepped in at any second.

That is not a staged screenshot. It is the actual thing the product is for, sitting right there in your first workspace.

Why AGPL

You can self host Remnus, read every line, and change whatever you want. If you run it as a service for other people, you share your changes back. That felt like the honest deal for a tool people are going to trust with their notes. There is a longer post on the reasoning if you want it.

Where I will be honest with you

Remnus is early. Notion has years of polish, a template ecosystem nobody is going to match soon, and mobile apps that millions of people rely on. I am one project, not a company with a floor full of designers.

What Remnus has is a different center of gravity. The agent is the point, not a feature someone added in a sprint. If that is what you came for, you will feel the difference in the first ten minutes.