Folio

Self-hosted Git-backed team wiki: search, read, create and update pages, data tables and whiteboards over MCP. OAuth or personal access token.

Documentation

Folio

The vibe-coded, open-source alternative to Notion and Confluence. Your team's wiki lives in Git. People write in the browser, together, in real time. AI agents read and write the same pages. One command to run it yourself.

Website: https://foliowiki.online Β· Featured in Self-Host Weekly (9 Oct 2026)

πŸ‘‰ Try the live demo

No install, no sign-up: open it and pick Sam on the sign-in screen. Shared login, data resets every 24 hours; don't enter personal data or API keys.

A page in Folio

Folio was built to replace Confluence and Notion for a real team β€” and it was built by AI agents, in the open. The plans, specs and hand-off notes the agents work from are in this repository, next to the code they wrote. More on that below.

git clone https://github.com/evergreen-it-dev/folio.git
cd folio
docker compose up -d

Open http://localhost:4870, create the first account, start writing.

Not ready to install? Try the live demo first.


Why Folio

  • You own the content. Every page is a plain file in a Git repository you control. No export step, no lock-in: stop using Folio tomorrow and the files are still there, readable in any editor.
  • It works the way a wiki should. Real-time editing, a page tree, search, access rights, history, sharing β€” and it keeps working offline.
  • Agents are first-class users. Not a chatbot bolted on the side: a built-in assistant, your own agent in every space, a full MCP server, and Markdown links made for agents.
  • Documents, tables, whiteboards, diagrams and files in one tree. A roadmap table next to the spec, next to the architecture board, next to the signed PDF.
  • One command to run. Docker, and nothing to configure for a first start.

See it in action

Short walkthroughs, no slides. The voice in the videos is synthetic.


Git-first, all the way down

Most wikis keep your content in a database and offer Git as an export. Folio does the opposite: the Git repository is the wiki. The database holds the index, access rights and the state of live editing β€” never the only copy of your words.

This is what a space looks like on disk:

acme-handbook/
β”œβ”€β”€ index.md
β”œβ”€β”€ welcome-to-acme.md
β”œβ”€β”€ engineering.md
β”œβ”€β”€ engineering/
β”‚   β”œβ”€β”€ onboarding-checklist.md
β”‚   β”œβ”€β”€ release-process.md
β”‚   β”œβ”€β”€ incident-runbook.md
β”‚   └── how-folio-fits-together.excalidraw.svg    ← a whiteboard
β”œβ”€β”€ meeting-notes.md
β”œβ”€β”€ meeting-notes/
β”‚   └── product-sync-september-28.md
β”œβ”€β”€ roadmap.table.md                               ← a data table
β”œβ”€β”€ onboarding-feedback.table.md
β”œβ”€β”€ onboarding-feedback/
β”‚   └── onboarding-feedback.form.md                ← a form
β”œβ”€β”€ security-policy.md
β”œβ”€β”€ security-policy.pdf                            ← files are pages too
└── security-policy.docx

And this is its history β€” ordinary commits, with the people who made the changes as authors:

$ git log --format='%h  %an  %s'
be529a0  Maria Chen  folio:update
aeac3bb  Maria Chen  folio:update
6c2c061  Sam Rivera  folio:update
026d9ec  Maria Chen  folio:update
...
4e9ec49  Folio       init: create space

What that gives you:

  • Edit anywhere. Change a page in the browser or in your IDE and push β€” both land in the same history. Links between pages are ordinary relative Markdown links, not a private dialect.
  • Bring your own repository. Start with an empty space, clone an existing repository, or connect one later. Several spaces can share one repository, each in its own folder β€” so documentation can live right next to the code.
  • Review like code. Merge requests, blame, diff and revert work on your wiki because it is a repository.
  • Nothing is lost quietly. Sync state is always visible β€” clean, ahead, behind, conflict β€” and conflicts are listed for the whole space. "Take the version from Git" resets a space to the remote branch and saves what was there into a backup branch first.
  • Readable formats. A whiteboard is an SVG that opens in any browser and still carries the editable scene. A data table is one Markdown file β€” the column types and saved views in the front matter, the rows as a table you can read:
# Roadmap

| Initiative | Status | Owner | Team | Due | Effort, days | Urgent | id |
| --- | --- | --- | --- | --- | ---: | --- | --- |
| Single sign-on for enterprise plans | In progress | @alex | Engineering | 2026-10-09 | 8 | [x] | 1787nfg3 |
| New onboarding flow | In review | @sam | Design | 2026-10-02 | 5 | [ ] | b227mwwh |
| Pricing page redesign | Planned | @sam | Design | 2026-10-16 | 3 | [ ] | ndxvtpa3 |

Page history with authors


Write together

Documents, data tables and whiteboards are edited by several people at once. You see who is on the page and where their cursor is; changes appear as they are typed. When the page goes quiet, Folio commits β€” with the person who edited as the author.

Three people editing one page

What you type is not lost between Live edit and Reading: the browser keeps a local copy until the server confirms it has your edits. If it cannot confirm them, the header says Not saved and closing the tab asks first.


Works offline

On a train, on a plane, on bad hotel Wi-Fi β€” keep writing.

  • Pages and whiteboards you have opened stay editable without a connection.
  • New pages and whiteboards can be created offline and appear in the tree straight away.
  • Everything is kept on the device and reaches the server by itself when the connection returns β€” at the same address, with no duplicates.
  • Nothing is lost if you switch pages or close the tab.
  • An indicator in the header shows what is waiting to be sent.

Writing a new page without a connection

Data tables, forms and file uploads need a connection.


Documents

A Markdown editor that does not make you think about Markdown. Three modes β€” Reading, Live edit and Source β€” so that writers and engineers are both at home.

The editor with a diagram, a checklist and a callout

  • Callouts, checklists, tables with merged cells and colors, code blocks, collapsible sections, highlights, ++underline++, and coloured status tags like :status[Done]{color=green}.
  • Paste from Excel and Google Docs keeps tables and formatting; copying out of Live edit keeps it too.
  • [[ links a page, @ mentions a person, / inserts anything.
  • ::pagetree puts a live tree of child pages right into the text.
  • Outline and notes panel, backlinks, page icons and covers, templates, glossary terms with hover cards.
  • Light and dark themes, following the system or chosen by hand.

The same page in the dark theme


Diagrams you draw, not type

Mermaid diagrams come with a visual editor. You build the diagram on a canvas, and Folio writes the Mermaid code for you β€” or you type the code and watch the canvas follow. Both sides stay in sync.

The visual Mermaid editor

  • Click to build. A plus on a node adds a connected one, a plus on a link inserts a node into it, a handle drags a new link from node to node.
  • Nine diagram types from templates: flowchart, sequence, classes, states, ER, Gantt, timeline, pie, mind map.
  • Code and canvas side by side, full screen when you need room, and a readable message instead of a broken picture when the syntax is wrong.
  • Still plain Markdown. The diagram is stored as an ordinary mermaid code block, so GitHub and GitLab render it too.

Data tables

Spreadsheets that belong to the wiki: typed columns, saved views, filters and sorting β€” a small database you can link from any page and query from any agent.

A roadmap as a data table

  • Column types: text, long text, number, date, checkbox, select, status, user, link.
  • Views as tabs, each with its own columns, order, widths, multi-column sort and and/or filters β€” including "me", "today", "this week".
  • Edited together in real time, stored as one readable file in Git.
  • Import and export; up to 20,000 rows per table.

Forms turn a table into a questionnaire: every answer becomes a row. A form can be public, so people answer without an account.

A form that writes into a table


Whiteboards

Excalidraw boards inside the wiki β€” architecture, flows, workshops. Drawn together in real time and saved as SVG files that render anywhere.

A whiteboard

The board above was not drawn by hand. An agent created it through MCP from a short description of boxes and arrows; people then keep editing it like any other board.

Reactions. Select a shape in Edit mode and a small button appears at the corner of its selection frame: pick an emoji (πŸ‘ ❀️ πŸ˜‚ πŸŽ‰ πŸ€” πŸ‘€ πŸ”₯ πŸ‘) and a counter chip shows under the shape. Click a chip to add or remove your own; point at it to see who reacted. Reactions are live for everyone on the board, and people who can only view it (or are in View mode) see them too but cannot click them. They are kept with the board's live state, not in its SVG file.


Document preview

PDF, Word, Excel and PowerPoint files are pages too. Drop one into the tree and it opens right inside Folio β€” no download, no other application, no conversion on the server.

A PDF previewed inside Folio

A Word document previewed inside Folio

  • PDF in the browser's own viewer: thumbnails, zoom, search, print.
  • Word, Excel and PowerPoint rendered in the browser.
  • The file sits in the space's Git repository next to the pages about it, in the same tree, under the same access rights.
  • Open in a new tab or download with one click.
  • Folio never rewrites your file: what you uploaded is byte for byte what is stored.
  • A new version of the file, same page. "Replace with new version…" in the tree menu, the button in the page header, or drag a file onto the open page. The page keeps its link, place in the tree and access; the new file may even be another type (a deck that became a PDF), and links to it from other pages are rewritten. A toast offers Undo.
  • Every version stays. Each replace is its own commit. The page history lists the versions with their file name and size, lets you download any of them (or preview a PDF) and restore one, which adds one more commit rather than rewriting anything.

These files are for viewing: they are not edited in Folio, and search finds them by title.


Folio AI

An assistant in the side panel that works with your wiki, not next to it.

The assistant adds a row to the roadmap and answers from the data

In the screenshot the assistant was asked to add an initiative to the roadmap and say which ones are urgent. It read the table's schema, inserted the row β€” it appears in the table on the left β€” and answered from the data.

  • Ask β€” read-only. Find, summarize, compare, explain across the pages you have access to.
  • Agent β€” reads and writes. Drafts a page, updates a table, draws a board, restructures a section β€” inside your rights, never beyond them.
  • Runs live on the server. Close the browser and the work continues; come back and pick up where it was.
  • The same tools as everyone else. The assistant works through the very tools an outside agent gets over MCP β€” there is no second, weaker implementation, and in Ask mode the write tools are switched off on the server, not just hidden.

Is the assistant actually helping?

Folio collects three signals about answer quality, without asking anyone to fill in a form:

  • πŸ‘ / πŸ‘Ž on an answer. Every saved assistant answer can be rated "Helpful answer" or "Not helpful". One rating per answer, and you can change or remove it.
  • A short survey. After every third answer in a conversation the panel asks "Did the assistant solve your question?" β€” Yes, Partly, No or Not now β€” with an optional comment.
  • Questions without an answer. When the pages do not contain the answer, or the assistant is not sure of it, it records the question and what was missing β€” briefly, with links to the pages it did read β€” then still answers the person plainly.

Instance administrators see all of it on one page, Assistant analytics (/admin/assistant, from the account menu): the conversations with their ratings and survey results, and a second tab, "Questions without an answer", which is a ready list of what your documentation is missing β€” the person's own words first, the assistant's restatement below, and links to the pages the assistant read. Both tabs filter by space, user and date. A space administrator sees the same page limited to the spaces they administer: only conversations that ran there, and only the messages of those runs. An administrator can open a conversation to read it; the conversation page lists who opened it and when, and every opening is written to the audit log. Other people do not see this page.

Assistant analytics: the list of questions the pages could not answer, with the person's words, the space and what is missing

Your own agent in every space: .agent

Every space has a .agent folder. Whatever you put there becomes the assistant's instructions for that space β€” and it is written as ordinary Folio pages, not as configuration.

  • Build an agent by writing pages. Its role, its tone, the glossary, the rules it must follow, the templates it should use, the process it should walk people through.
  • A different agent for every team. The support space gets an agent that answers like support. The engineering space gets one that knows the release process. Legal gets one that never improvises. Same Folio, different agents.
  • Versioned like everything else. The instructions live in Git: you can see who changed the agent's behavior, review the change, and roll it back.
  • Owned by administrators. Only space administrators see and edit .agent; everyone else just gets a better assistant.

The instructions apply to every run in the space, in Ask and Agent modes alike.

Bring your own subscription

Folio does not resell AI and does not mark it up. You connect the subscription you already pay for, and the assistant runs on it.

ProviderStatus
Cursoravailable β€” each person connects their own key, or the operator sets one for everyone
Otherscoming soon

Without a subscription everything else in Folio works as usual.


Built for agents

MCP server. 23 tools over /mcp with personal access tokens: list and search spaces, read and write pages, create and edit whiteboards, query and update data tables, read history.

claude mcp add folio --transport http https://wiki.example.com/mcp \
  --header "Authorization: Bearer folio_pat_…"

Ready-made setups. Files for Claude Code (a plugin and a skill), Cursor, VS Code, Codex, n8n (two importable workflows), Open WebUI, ChatGPT and Claude live in integrations/: configs with placeholders, rules for the agent and step-by-step instructions.

Markdown for an agent. Any page β€” with its child pages, if you want β€” is one link that returns clean Markdown. No scraping, no HTML, no login flow:

curl https://wiki.example.com/share/<token>.md

Sharing a page as Markdown for an agent

Export in the formats agents and people need: Markdown, YAML, PDF, DOCX, or a zip of a whole space.

Safe by design. A token never has more rights than its owner, a read token cannot write, and administrative actions are not available to tokens at all. Details: docs/MCP.md.


Moving from Confluence

Point Folio at a Confluence page or a whole tree and it brings the pages over as Markdown β€” with images, code, checklists, and panels converted into callouts. Pages come from Confluence Cloud and from on-premises installations; whiteboards from Confluence Cloud become Excalidraw boards.

Run a test import first: not every macro has an equivalent. What is not there yet is written down honestly.


Access management

Who sees what is decided in one place, and it is visible at a glance.

The access matrix: people and spaces

  • Roles per space: administrator, editor, viewer.
  • Private or open spaces. A private space is visible to its members only. A space open to the instance gives everyone read access, and edit rights still have to be granted.
  • The access matrix. People down the side, spaces across the top, a role in every cell. Change one cell or many at once.
  • An administrator is not a reader. The instance administrator manages people and access but does not see the content of a private space they are not a member of. They can grant access to themselves β€” and that is written to the audit log and marked for everyone to see.
  • Audit log. Every grant, revoke and visibility change is recorded with who did it and when.

Page-level access. Any page can be narrower than its space: open to all members, to you only, or to selected people with view or edit rights.

Access to a single page

Getting people in

  • Invitations by link with preset spaces and roles, an expiry date and a usage limit.
  • Access requests. Someone who opens a space they cannot see can ask for access; administrators are notified at once and choose the role.
  • Sign in with Google, limited to the email domains you list. A new person gets an account and no access until someone grants it.
  • Deactivate an account without deleting what the person wrote.

Sharing outside

  • Share links for people without an account: view or edit, one page or a whole subtree (pages with their own access restrictions are left out), revocable at any time.
  • Forms that accept answers without an account.

For agents and scripts

  • Personal access tokens with read or write scope. A token never has more rights than its owner, and administrative actions are not available to tokens at all.
  • The .agent folder is visible to space administrators only.

Run it

You need Docker and Git. Nothing else.

git clone https://github.com/evergreen-it-dev/folio.git
cd folio
docker compose up -d

The first start builds the application and takes a few minutes. Then open http://localhost:4870 and create the first account β€” it becomes the administrator.

A short welcome takes it from there: pick what to create first β€” a document, a whiteboard or a data table β€” look through what Folio can do, and land in your first space with that page open. Connecting an existing Git repository is one link away on the same screen.

The welcome screen: what do you want to create first

WhereHow
Your computerdocker compose up -d
A server or VPSone command from the published image: deploy/vps, or the compose file above plus --profile https for automatic HTTPS
Coolify, Railway, Render, DigitalOcean, Dokploy, CapRover, Easypanel, Portainer, Fly.ioready-made kits in deploy/, see One-click and PaaS
Any other container platformfrom the Dockerfile, with PostgreSQL, Redis and a persistent volume β€” see requirements
Vercel, Netlify and other serverless hostingnot supported β€” Folio is a long-running server that keeps Git repositories on disk and holds live connections

One click on Railway: Deploy on Railway

Domains, HTTPS, updates and backups: docs/INSTALL.md.

No telemetry. A Folio you run sends nothing about its use to anyone: no analytics library is loaded and no connection is opened to the Folio authors or to a third party. There is one opt-in exception for people who run a public demo: set FOLIO_POSTHOG_KEY to a PostHog project of your own and Folio sends anonymous events (page kinds, space slugs, never content). Without that key nothing happens. Details: docs/INSTALL.md.


Vibe-coded, and not hiding it

Folio is written by AI coding agents. A human product owner decides what to build, tries every change in the browser and decides what ships; agents plan the work, write the code and the tests, and document what they did.

From the first commit on August 21, 2026 to version 0.1.0 on September 29, 2026: 39 days, more than 400 commits upstream, roughly 90,000 lines of TypeScript and another 50,000 lines of tests. It runs in production for a real team.

We publish how it is made, not only what was made:

FileWhat it is
AGENTS.mdHow the work is organized and the rules agents follow in this repository
docs/HANDOFF.mdThe current state: how Folio is put together, what must never break, what is open, and the lessons that cost us something to learn
DEV-PLAN.mdWhat has been built, in the order it was built, and what comes next

If you are building with agents yourself, this repository is a worked example of a non-trivial product made that way. If you only want a wiki, none of it gets in your way.


Documentation

Development

cp .env.dev.example .env
docker compose -f docker-compose.dev.yml up -d   # PostgreSQL, Redis, MinIO
npm install
npm run dev                                      # http://localhost:4871

Node.js 22.12 or newer (22.13 or newer for the assistant). See CONTRIBUTING.md β€” and AGENTS.md if your contributor is an agent.

Help and security

Questions and bug reports: SUPPORT.md. Please report vulnerabilities privately, as described in SECURITY.md.

License

MIT