Self-hosted team docs where every save is a Git commit: WYSIWYG editor, built-in MCP server for AI agents, whitelabel branding. Source-available.
See the codeSelf-hosted team documentation with Git as the source of truth. Edit collaboratively in the browser; every save is a commit to your repo. Comes with a CRUD MCP server for local AI editing and a role-based permission system. AI features are optional.
Website · Install guide · MCP server · Contributing

Most documentation tools either lock your content into a proprietary store (Notion, Confluence) or make you choose between web-editing and Git workflow (raw GitLab/GitHub, plain Markdown sites). DocuVault keeps both: your documents live as Markdown files in a Git repository you control, while the team gets a real WYSIWYG editor, search, sharing, and permissions on top.
For developers and AI tools, the same files are available locally — clone the repo, edit with Claude Code / Cursor / your editor of choice, push, and the web UI reflects the change. The included MCP server gives AI agents full CRUD access to documents without leaving the agent's tool loop.
/api/mcp, sign in once in the browser, and your agent can search, read, create, edit and share documents with your permissions.ADMIN_EMAIL/ADMIN_PASSWORD env vars to fumble — visit the URL, create the admin, done.Your spaces![]() | Every save is a commit![]() |
AI agents write through MCP![]() | Ask your documentation![]() |
Comments that stay on their words![]() | Scrub through version history![]() |
Public links with password and comments![]() | Inbox with AI routing![]() |
You need a Linux server with Docker, a DNS name pointing at it, and ports 80 + 443 open.
# On the target server
git clone --depth 1 https://github.com/Systaro/DocuVault.git /opt/docuvault
cd /opt/docuvault
cp .env.example.product .env
$EDITOR .env # fill in PUBLIC_HOSTNAME, secrets, SMTP credentials
./deploy.sh latest # pulls the public images, backs up, swaps, health-checks
The images are public on ghcr.io/systaro/docuvault for amd64 and arm64, signed with cosign, and need no registry login. latest is the newest release; pin a version (./deploy.sh v0.8.0) for production. If an update fails its health check, deploy.sh restarts the images that ran before.
Then visit https://<your-hostname> in a browser. The first-time setup wizard walks you through creating the admin account.
Full install and upgrade documentation: docs/install.md.
Run DocuVault under your own name. As super admin, open Admin → Branding and set:
Changes apply immediately for everyone, including the sign-in page. Branding is one per installation.
![]() | ![]() |
cp .env.example .env # set DB_PASSWORD and JWT_SECRET
docker compose up --build # app on http://localhost:7031
Details for working on the backend, frontend and meeting bot are in CONTRIBUTING.md.
DocuVault runs its own MCP server at /api/mcp (Streamable HTTP). Connecting
works like connecting GitLab: one URL in the client, a consent page in the
browser, done. No token to copy, nothing to install.
claude mcp add --transport http docuvault https://your-docuvault.example.com/api/mcp
# then, in a session: /mcp → docuvault → Authenticate
Claude Desktop, Cursor and other clients with HTTP transport and OAuth support take the same URL:
{
"mcpServers": {
"docuvault": { "type": "http", "url": "https://your-docuvault.example.com/api/mcp" }
}
}
The server exposes 19 tools covering search/list/read/create/edit/share for
documents, spaces and space state, tasks (list_tasks, create_task,
update_task), plus upload_file / download_file for
binaries and large files: they hand out a one-time URL and the agent moves the
bytes with curl (or Invoke-WebRequest on Windows), so nothing binary
passes through the model. Every call runs as the signed-in user with that
user's space permissions. For scripts and CI, where no browser is
available, the same endpoint accepts a personal API token from your account
page as Authorization: Bearer dv_... header.
The OAuth side is a small built-in authorization server (dynamic client
registration, PKCE, refresh rotation); clients discover it through
/.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server,
which the frontend nginx forwards to the backend. PUBLIC_URL is the OAuth
issuer, so it has to be exactly the URL clients use.
The legacy stdio package @systaro/docuvault-mcp (npx, API token in the env)
still works for clients without HTTP/OAuth support.
DocuVault is in early access. The data model and APIs are stable for self-hosting; expect occasional breaking changes in minor versions until 1.0. Tasks and the meeting bot are alpha. Release notes are on GitHub Releases and in the app (click the version next to the logo).
Issues and pull requests are welcome, see CONTRIBUTING.md. This repository is published from Systaro's internal repository, so pull requests are applied by a maintainer rather than merged here.
DocuVault is source-available, not open source in the OSI sense: Business Source License 1.1. Free to use and modify for self-hosting, including inside your company; offering it as a competing hosted service requires a separate agreement. The license auto-converts to Apache 2.0 after four years per version. For commercial licensing, contact licensing@systaro.de.
See SECURITY.md. TL;DR: disclose privately to security@systaro.de, and be aware that public share links intentionally render embedded HTML and JavaScript.
TypeScript
59.2%
Kotlin
36.0%
HTML
2.3%
SCSS
1.3%
Self-hosted team docs where every save is a Git commit: WYSIWYG editor, built-in MCP server for AI agents, whitelabel branding. Source-available.
See the codeSelf-hosted team documentation with Git as the source of truth. Edit collaboratively in the browser; every save is a commit to your repo. Comes with a CRUD MCP server for local AI editing and a role-based permission system. AI features are optional.
Website · Install guide · MCP server · Contributing

Most documentation tools either lock your content into a proprietary store (Notion, Confluence) or make you choose between web-editing and Git workflow (raw GitLab/GitHub, plain Markdown sites). DocuVault keeps both: your documents live as Markdown files in a Git repository you control, while the team gets a real WYSIWYG editor, search, sharing, and permissions on top.
For developers and AI tools, the same files are available locally — clone the repo, edit with Claude Code / Cursor / your editor of choice, push, and the web UI reflects the change. The included MCP server gives AI agents full CRUD access to documents without leaving the agent's tool loop.
/api/mcp, sign in once in the browser, and your agent can search, read, create, edit and share documents with your permissions.ADMIN_EMAIL/ADMIN_PASSWORD env vars to fumble — visit the URL, create the admin, done.Your spaces![]() | Every save is a commit![]() |
AI agents write through MCP![]() | Ask your documentation![]() |
Comments that stay on their words![]() | Scrub through version history![]() |
Public links with password and comments![]() | Inbox with AI routing![]() |
You need a Linux server with Docker, a DNS name pointing at it, and ports 80 + 443 open.
# On the target server
git clone --depth 1 https://github.com/Systaro/DocuVault.git /opt/docuvault
cd /opt/docuvault
cp .env.example.product .env
$EDITOR .env # fill in PUBLIC_HOSTNAME, secrets, SMTP credentials
./deploy.sh latest # pulls the public images, backs up, swaps, health-checks
The images are public on ghcr.io/systaro/docuvault for amd64 and arm64, signed with cosign, and need no registry login. latest is the newest release; pin a version (./deploy.sh v0.8.0) for production. If an update fails its health check, deploy.sh restarts the images that ran before.
Then visit https://<your-hostname> in a browser. The first-time setup wizard walks you through creating the admin account.
Full install and upgrade documentation: docs/install.md.
Run DocuVault under your own name. As super admin, open Admin → Branding and set:
Changes apply immediately for everyone, including the sign-in page. Branding is one per installation.
![]() | ![]() |
cp .env.example .env # set DB_PASSWORD and JWT_SECRET
docker compose up --build # app on http://localhost:7031
Details for working on the backend, frontend and meeting bot are in CONTRIBUTING.md.
DocuVault runs its own MCP server at /api/mcp (Streamable HTTP). Connecting
works like connecting GitLab: one URL in the client, a consent page in the
browser, done. No token to copy, nothing to install.
claude mcp add --transport http docuvault https://your-docuvault.example.com/api/mcp
# then, in a session: /mcp → docuvault → Authenticate
Claude Desktop, Cursor and other clients with HTTP transport and OAuth support take the same URL:
{
"mcpServers": {
"docuvault": { "type": "http", "url": "https://your-docuvault.example.com/api/mcp" }
}
}
The server exposes 19 tools covering search/list/read/create/edit/share for
documents, spaces and space state, tasks (list_tasks, create_task,
update_task), plus upload_file / download_file for
binaries and large files: they hand out a one-time URL and the agent moves the
bytes with curl (or Invoke-WebRequest on Windows), so nothing binary
passes through the model. Every call runs as the signed-in user with that
user's space permissions. For scripts and CI, where no browser is
available, the same endpoint accepts a personal API token from your account
page as Authorization: Bearer dv_... header.
The OAuth side is a small built-in authorization server (dynamic client
registration, PKCE, refresh rotation); clients discover it through
/.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server,
which the frontend nginx forwards to the backend. PUBLIC_URL is the OAuth
issuer, so it has to be exactly the URL clients use.
The legacy stdio package @systaro/docuvault-mcp (npx, API token in the env)
still works for clients without HTTP/OAuth support.
DocuVault is in early access. The data model and APIs are stable for self-hosting; expect occasional breaking changes in minor versions until 1.0. Tasks and the meeting bot are alpha. Release notes are on GitHub Releases and in the app (click the version next to the logo).
Issues and pull requests are welcome, see CONTRIBUTING.md. This repository is published from Systaro's internal repository, so pull requests are applied by a maintainer rather than merged here.
DocuVault is source-available, not open source in the OSI sense: Business Source License 1.1. Free to use and modify for self-hosting, including inside your company; offering it as a competing hosted service requires a separate agreement. The license auto-converts to Apache 2.0 after four years per version. For commercial licensing, contact licensing@systaro.de.
See SECURITY.md. TL;DR: disclose privately to security@systaro.de, and be aware that public share links intentionally render embedded HTML and JavaScript.
TypeScript
59.2%
Kotlin
36.0%
HTML
2.3%
SCSS
1.3%