Agent-friendly knowledge base editor. Pure frontend. Your data, your control.
π Live Demo: motion.wencai.app
Motion is a pure-frontend Notion-style knowledge base editor with a built-in AI agent interface. Your data is stored in a GitHub repo as plain markdown β no backend, no vendor lock-in, no data leaving your browser.
Unlike cloud-based tools, Motion gives you:
- Full data ownership β your GitHub repo is your database
- AI-native architecture β a built-in MCP Server lets any AI agent read and write your knowledge base via WebSocket
- Zero infra β deploy to Vercel in one click, or just run locally
Screenshots below show the main editor, AI Chat panel, knowledge graph, and version history.
| Editor | AI Chat |
|---|---|
![]() |
![]() |
| Knowledge Graph | Version History |
|---|---|
![]() |
![]() |
The Notion-style editor landscape is crowded. Here's where Motion fits:
| Motion | Notion | Obsidian | Logseq | AppFlowy | |
|---|---|---|---|---|---|
| Where data lives | π’ Your GitHub repo | βοΈ Notion's cloud | πΎ Local files | πΎ Local files | βοΈ AppFlowy cloud or self-hosted |
| AI agent access | π’ MCP WebSocket β built in | β | β | ||
| Backend required | π’ None | β Vendor | None | None | β Your own server |
| Version history | π’ Every Git commit | β | |||
| Collaborative | π’ via Git (PRs as suggestions) | β Real-time | β | ||
| Self-hosted | π’ One-click Vercel or static | β | n/a (local) | n/a (local) | β |
| Privacy | π’ OAuth token stays in browser | π’ | π’ | depends | |
| Sharing a page | π’ 1-click public link | π’ | |||
| Mobile | π’ PWA | π’ Native | π’ Native | π’ Native | π’ Native |
| Free for personal | π’ | Freemium | π’ | π’ | π’ |
TL;DR: Motion's bet is "your knowledge base should be a Git repo, AI agents should be first-class, and there should be no backend to operate." If you already live in GitHub + want a Notion-class editor that an AI can read/write through MCP β Motion is built for you. If you want real-time multiplayer editing with rich permissions, Notion is still the answer.
- π§ Agent-Friendly MCP Server β AI agents connect via WebSocket and can list, read, write, search, and traverse your knowledge graph
- π Privacy First β OAuth tokens never leave the browser; data stored in your own GitHub repo
- π Block Editor β Notion-style BlockNote editor: slash commands, drag & drop blocks, markdown shortcuts
- π Bidirectional Links β
[[wiki-links]]with automatic backlink indexing and a force-directed knowledge graph - π·οΈ Tags & Frontmatter β Structured YAML frontmatter, tag cloud, and semantic organization
- π Dark Mode β Light / Dark / System with
Cmd+Kcommand palette - π GitHub Storage β Read/write to any GitHub repo via Octokit β commits are your version history
- π°οΈ Version History β Full commit history with diff preview and one-click rollback
- π Full-Text Search β Fuzzy search across all files with Fuse.js
- π Multi-Tab Editing β Tabs with unsaved indicators, drag-to-reorder, and keyboard shortcuts
- ποΈ Table of Contents β Auto-generated sticky TOC with scroll-position highlighting
- π± PWA + Mobile β Installable, offline-capable, responsive layout
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browser β
β ββββββββββββ βββββββββββββ βββββββββββββββββββββ β
β β BlockNote β β Zustand β β MCP Server (WS) βββββββ AI Agent
β β Editor β β Store β β read/write docs β β
β ββββββ¬ββββββ βββββββ¬ββββββ ββββββββββ¬βββββββββββ β
β β β β β
β ββββββββββββββββΌβββββββββββββββββββ β
β β β
β βββββββββββΌβββββββββββ β
β β StorageProvider β β
β β (pluggable) β β
β βββββββββββ¬βββββββββββ β
β β β
β βββββββββββΌβββββββββββ β
β β IndexedDB Cache β β
β βββββββββββ¬βββββββββββ β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ
β HTTPS (Octokit)
ββββββββββΌβββββββββ
β GitHub API β
β (repos/files) β
βββββββββββββββββββ
- Node.js 20+
- pnpm 9+
- A GitHub OAuth App
git clone https://github.com/jiusanzhou/motion.git
cd motion/client-web
pnpm installCreate a GitHub OAuth App at github.com/settings/developers:
- Homepage URL:
http://localhost:3000 - Callback URL:
http://localhost:3000/api/auth/callback/github
Then create .env.local:
cp .env.local.example .env.localFill in your credentials:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
NEXTAUTH_SECRET=your_random_secret # openssl rand -base64 32
NEXTAUTH_URL=http://localhost:3000pnpm devOpen http://localhost:3000 β sign in with GitHub, connect a repo, and start writing.
Motion runs an MCP (Model Context Protocol) Server inside the browser, exposed via WebSocket:
ws://localhost:3000/mcp
AI agents can:
- List all documents in the knowledge base
- Read document content (markdown + frontmatter)
- Create / Update / Delete documents
- Search by tags, full-text, or graph traversal
- Query the knowledge graph (backlinks, related pages)
This turns your browser into a live knowledge API that any MCP-compatible agent can connect to.
Motion uses a pluggable StorageProvider interface. Currently supported:
| Backend | Status | Description |
|---|---|---|
| GitHub | β Stable | Read/write markdown files to any GitHub repo via Octokit |
| Local/IndexedDB | β Cache | Offline-first caching layer with incremental sync |
| S3 / WebDAV | ποΈ Planned | Community contributions welcome |
Your GitHub repo is your database β standard markdown files with YAML frontmatter, organized however you like.
| Layer | Technology |
|---|---|
| Framework | Next.js 16, React 19 |
| Editor | BlockNote |
| State | Zustand |
| Styling | Tailwind CSS 4 |
| Auth | NextAuth (GitHub OAuth) |
| Storage | Octokit (GitHub API) |
| Search | Fuse.js |
| Graph | d3-force, react-force-graph-2d |
| WebSocket | ws (MCP relay) |
See ROADMAP.md for the full development plan and progress.
- π Try it now β motion.wencai.app
- π¬ Questions / ideas / show your knowledge base β GitHub Discussions
- π Bug / feature β Issues
- π€ First-time contributor β look for
good first issue, then read CONTRIBUTING.md - π Security disclosure β
security@zoe.im(please, not public issues) - β Star the repo if Motion's approach to data ownership resonates with you β it's the cheapest way to help others discover it
Motion has zero backend, so deployment is a static site + optional MCP relay worker:
Want the MCP server too? See docs/DEPLOYMENT.md for Cloudflare Workers, self-hosted Node, or Docker setup.
Contributions are welcome β see CONTRIBUTING.md for the dev setup, architecture pointers, and code style. We aim to respond to every issue within 24 hours.
If you build something neat with Motion (a custom block, a new storage backend, a clever MCP integration), please share it in Show and Tell.
MIT Β© Zoe and Motion contributors.
You can use Motion in commercial products, fork it, modify it, and ship it β no permission needed. If you build something cool with it, we'd love to see it in Discussions.



