discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
ariedotme/vasta · source
Snapshot 0 · 2026-11-04T12:47:28Z · TypeScript · AGPL-3.0
Content fingerprint
d802ea7ff6b35571ee1b9535109558ca1818281d4ebefaae39807bc873398876GitHub description at capture
Open-source, self-hosted alternative to Capacities and Notion: notes, tasks and daily notes as typed objects. Local-first, works offline, MCP for your agents.
README at capture
<h1 align="center">
<img src="packages/web/public/icon.svg" alt="" width="64" valign="middle" /> Vasta
</h1>
<p align="center">
<strong>Your notes, tasks and days in one app, on your computer or your own server.</strong><br/>
Local-first. Works offline. No server needed to start; move to one whenever you want.
</p>
<p align="center">
<b>English</b> · <a href="README.pt-BR.md">Português</a> · <a href="README.es.md">Español</a> · <a href="README.zh-CN.md">简体中文</a> · <a href="README.ja.md">日本語</a>
</p>
<p align="center">
<a href="https://github.com/ariedotme/vasta/releases/latest"><img src="https://img.shields.io/github/v/release/ariedotme/vasta?style=flat&colorA=222222&colorB=4493F8&label=release" alt="Latest release" /></a>
<a href="https://github.com/ariedotme/vasta/blob/main/scripts/downloads-badge.mjs"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fariedotme%2Fvasta%2Fbadges%2Fdownloads.json&style=flat" alt="Downloads and updates: release files and server image pulls, updates included" /></a>
<a href="https://github.com/ariedotme/vasta/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/ariedotme/vasta/ci.yml?style=flat&colorA=222222&colorB=3FB950&label=CI" alt="CI" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-222222?style=flat&colorA=222222&colorB=58A6FF" alt="License: AGPL-3.0" /></a>
<img src="https://img.shields.io/badge/web%20%C2%B7%20macOS%20%C2%B7%20Windows%20%C2%B7%20Linux-222222?style=flat&colorA=222222&colorB=8B949E" alt="Web, macOS, Windows and Linux" />
</p>
<p align="center">
<a href="#get-started">Get started</a> ·
<a href="#why-vasta">Why Vasta</a> ·
<a href="#self-hosting">Self-hosting</a> ·
<a href="#desktop-app">Desktop app</a> ·
<a href="#documentation">Documentation</a> ·
<a href="CONTRIBUTING.md">Contributing</a>
</p>
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/today-dark.jpg" />
<img src="docs/assets/today-light.jpg" alt="Today in Vasta: the day's events, the daily note with three captures, and the habits" width="960" />
</picture>
</p>
Vasta is an open-source, self-hosted alternative to Capacities and Notion. It keeps everything as
typed objects: pages, tasks, books, people, or a type that you make. Each day has a note.
Captures from your phone, your browser or an agent go into it. Each device keeps a copy of your
spaces, so the app works offline. Your server keeps all devices in sync.
> [!NOTE]
> Vasta is in alpha. Its author uses it every day, but some parts are new. Make backups
> ([docs/deploy.md](docs/deploy.md#upgrading-and-backups)).
If Vasta is useful to you, give it a ⭐ on GitHub. It is made by one person, and stars are how
other people find it.
## Get started
<table>
<tr>
<th width="50%">On your computer</th>
<th width="50%">On your own server</th>
</tr>
<tr>
<td valign="top">
**No server, no Docker, nothing to set up.**
1. [Download the desktop app](https://github.com/ariedotme/vasta/releases/latest)
for macOS, Windows or Linux.
2. Choose **Start on this computer**.
The app runs Vasta for you. Your notes stay on that computer.
</td>
<td valign="top">
**Every device, your phone included, and shared spaces.**
1. Run the server with Docker ([Self-hosting](#self-hosting)).
2. Open it in a browser, on your phone or in the desktop app.
Captures from Telegram, the browser extension and agents reach it from anywhere.
</td>
</tr>
</table>
> [!TIP]
> **Start on your computer, move later.** When you want your phone or other people in, open
> Settings › Server › **Move to a server…** in the desktop app. Paste the server's setup code
> or an invite link, and Vasta moves your notes, their history and your files into a new account
> there. [How it works →](docs/desktop.md#moving-to-a-server)
## Features
<table>
<tr>
<td width="40%" valign="middle">
### Capture in one line
Type a line in ⌘K, Telegram or the desktop shortcut. Vasta reads the type and the properties
from it: `/Task Ask Lena due:fri assignee:lena`.
[Capture →](docs/capture.md)
</td>
<td width="60%">
<img src="docs/assets/capture.gif" alt="The ⌘K palette makes a task with a due date and an assignee from one line" width="100%" />
</td>
</tr>
<tr>
<td width="40%" valign="middle">
### Your own types
Make a type for anything. Give it properties: text, numbers, dates, selects, relations,
formulas. Show it as a list, table, board, grid, wall or gallery.
[Data model →](docs/data-model.md)
</td>
<td width="60%">
<img src="docs/assets/types.gif" alt="The Books type switches from a shelf to a table to a gallery with covers" width="100%" />
</td>
</tr>
<tr>
<td width="40%" valign="middle">
### Work together
Share a space with other people. Use boards, sprints, comments, @mentions and
notifications. Flow metrics show how fast work moves.
[Accounts and spaces →](docs/accounts.md)
</td>
<td width="60%">
<img src="docs/assets/board.gif" alt="Two tasks are dragged on the board: one to Done, one to In progress" width="100%" />
</td>
</tr>
<tr>
<td width="40%" valign="middle">
### One calendar
Daily notes, tasks, dated objects, sprints and events go on one calendar. Add your other
calendars with their iCal links.
</td>
<td width="60%">
<img src="docs/assets/calendar.gif" alt="Two tasks are dragged to other days in the month view" width="100%" />
</td>
</tr>
<tr>
<td width="40%" valign="middle">
### Your agents, your notes
Claude Code, Codex and scripts read and write your notes through an MCP endpoint and the `vasta`
command: search, query, make objects, capture, log habits. They act as you, with a token you can
revoke. Vasta has no AI inside and keeps no model keys.
[Agents →](docs/agents.md)
</td>
<td width="60%">
```sh
claude mcp add --transport http vasta \
https://vasta.example.org/mcp \
--header "Authorization: Bearer <token>"
```
> Read my notes from this week's meetings and make a task for each
> thing I promised, due Friday.
</td>
</tr>
</table>
**Also in Vasta:**
- **Offline first**: each device keeps a copy in SQLite. Edits made offline on two devices merge.
- **Block editor**: slash commands, `@` mentions, embeds, callouts, toggles, columns, tables,
Mermaid diagrams and backlinks.
- **Templates and snippets**: start a type's objects or each day's note from a template, with
placeholders (`{{date:+7d}}`, `{{ask:With whom?}}`) and blocks shown only when a condition
holds; insert snippets with `/`. [Templates →](docs/data-model.md#templates-and-snippets)
- **Saved links** keep a preview, a readable copy of the page and embeds.
- **Habits and reminders** through ntfy, Telegram and the desktop app. [Reminders →](docs/reminders.md)
- **A food diary** with nutrition goals, if you turn it on.
- **Apps**: install the web app on a phone (PWA). The desktop app adds a global capture shortcut.
- **Media** on disk or in an S3-compatible bucket.
- **Import** from Capacities: a full export, from Settings. [Import →](docs/import.md)
## Why Vasta
- **Capacities** has the same idea, objects with types and a note for each day, but it is closed
source and your notes live on its servers. Vasta runs on your computer or your server, works
offline, and has an importer for Capacities spaces.
- **Notion** is in the cloud and needs an account with Notion. Vasta keeps a full copy on each
device and syncs through a server you own.
- **Obsidian** keeps Markdown files on your disk; syncing them is a paid service or yours to set
up, and sharing a vault with other people is hard. Vasta has types and views built in, syncs to
your own server, and shares spaces with other people. It does not keep Markdown files (an export
is [planned](https://github.com/ariedotme/vasta/issues/1)).
- **AFFiNE and AppFlowy** are open source too, and do much more (whiteboards, AI, a cloud). Their
self-hosted servers run on Postgres and Redis, next to their own services. Vasta's server is one container
and one SQLite file, and it focuses on daily notes, typed objects and quick capture: Telegram,
a desktop shortcut, a browser extension and agents.
Vasta is not for you yet if you need a native phone app (it is a web app you install), plain
Markdown files, or several people typing in the same note at once
([#22](https://github.com/ariedotme/vasta/issues/22)).
## Self-hosting
You need Docker. Do these steps on the server:
```sh
mkdir vasta && cd vasta
curl -o compose.yml https://raw.githubusercontent.com/ariedotme/vasta/main/compose.example.yml
curl -o .env https://raw.githubusercontent.com/ariedotme/vasta/main/.env.example
docker compose up -d
docker compose logs vasta
```
1. Find the setup code in the log.
2. Open `http://127.0.0.1:5174`.
3. Make the first account with the setup code.
4. To add other people, make an invite link in Settings › Server accounts.
Started with the desktop app on your computer? Skip step 3: in the app, open Settings › Server ›
**Move to a server…** and paste the setup code there. Your notes come with the new account.
For HTTPS, backups, upgrades and media buckets, read [docs/deploy.md](docs/deploy.md).
## Desktop app
Download the app for macOS, Windows or Linux from the
[releases](https://github.com/ariedotme/vasta/releases/latest). On first start, choose where your
notes live:
- **Start on this computer**: no server needed. The app runs Vasta itself, and your notes stay on
that computer ([docs/desktop.md](docs/desktop.md#on-this-computer)). Settings › Server ›
**Move to a server…** moves them to a server later.
- **Your Vasta server**: type its address.
Apple and Microsoft did not sign the app. Thus your system stops it the first time:
- **macOS**: open System Settings › Privacy & Security. Click **Open Anyway**.
- **Windows**: in the SmartScreen message, click More info › **Run anyway**.
For more, read [docs/desktop.md](docs/desktop.md#installing).
## Development
You need Node.js 24 or later and pnpm 10.
```sh
pnpm install
pnpm dev # API on 127.0.0.1:5174, web app on http://127.0.0.1:5173
pnpm test
pnpm typecheck
```
The first start writes a setup code to the terminal. Use it to make your account. To start with
sample data, read [CONTRIBUTING.md](CONTRIBUTING.md).
```
packages/
core/ data model, SQLite schema, sync, media store
editor-schema/ rich-text schema for the editor and the server
server/ HTTP API (Hono), capture channels, MCP endpoint, admin CLI
web/ the app: Vue 3, Tailwind, TipTap, sqlite-wasm replica
desktop/ the desktop app (Tauri 2)
cli/ vasta, the CLI for agents and scripts
importer-capacities/ import from Capacities
extensions/browser/ "Save to Vasta" browser extension
```
## Documentation
- [Data model](docs/data-model.md): objects, types, properties, documents and queries
- [Accounts](docs/accounts.md): users, shared spaces, tokens, and how the API is safe
- [Self-hosting](docs/deploy.md): Docker, HTTPS, backups and upgrades
- [Desktop app](docs/desktop.md): install, how it works, releases
- [Capture](docs/capture.md): Telegram, HTTP API, browser extension, Shortcuts
- [Agents](docs/agents.md): the MCP endpoint and the CLI
- [Reminders](docs/reminders.md): ntfy, Telegram and the desktop app
- [Sync](docs/sync.md): how local-first sync works
- [Import](docs/import.md): bringing your notes over from Capacities
The server also describes its capture API at `/api/openapi.json` (OpenAPI 3.1).
## Next
- Import from Markdown folders, Obsidian and Notion, and a documented Markdown export
- A public HTTP API to read and edit objects
- Live editing of one note by many people at the same time
- Email as a capture channel
- CalDAV, Google and iCloud calendars (now: iCal links)
The full list is on the [roadmap](https://github.com/users/ariedotme/projects/1), as issues. Items with the `good first issue` label are a
good place to start.
## License
[AGPL-3.0](LICENSE). You can use, change and share Vasta. If you run a changed version for other
people on a network, give them its source code.