Skip to content
sianachiPublic

About

Self-hosted tool for managing notes, tasks, calendar, habits and the rest of life in one place

Topics

Resources

Code of conduct

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Latest commit

 

History

969 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Nix (nixsites): a workspace for people and their AI agents

Release Licence CI backend CI frontend Container image GitHub stars

Nix (nixsites) is a free, open-source workspace where people and their AI agents work together: notes, tasks, habits, calendars, spreadsheets, files and automations in one place.

Every workspace has an AI companion that can do anything you can do and asks before it changes anything. Your own agents reach the same workspace through nixctl and its MCP server, under the same permissions. Nix syncs in real time, exports with no lock-in, runs on your own server, and can publish a subtree as a static site.

Live demo and docs. That site is itself a Nix workspace, published as a static site.

A launch plan on a board in Nix

What it does

  • One tree, many views. A body (note, canvas or spreadsheet) is separate from how its children are shown: list, board, calendar, timeline, gallery, spreadsheet, chart, habit tracker, finance ledger.
  • Structure you shape yourself. Property schemas, formulas, rollups, templates and automations, plus a companion that builds structure on request, with every plan previewed before it runs.
  • Real-time editing. CRDT-synced notes with presence, version history and password-locked subtrees.
  • Quiet reminders and sync. Due tasks and habits arrive as push notifications; Google and Outlook calendars sync both ways with a visible log.
  • Safe by construction. Permissions are enforced by Postgres row-level security, and the web app, CLI and MCP server share one authorisation path.
  • No lock-in. Lossless .nix archives, plus PDF, DOCX and Markdown export; Markdown, DOCX, PDF and Obsidian import.
  • Scriptable. nixctl is a JSON CLI, and nixctl mcp exposes the workspace to AI tools.
  • HTTP API. The same workspace is a REST API. Create a personal access token, exchange it at POST /public/v1/auth/token, and call /api/v1. Start with the API guide; the contract is backend/openapi/nix-api.json.
  • Publish a subtree as a static site. The live demo above is one.

The full list is in docs/features.md.

Screenshots

One tree of items, shown the way each job needs. All data here is made up.

Timeline
Timeline
Calendar
Calendar
Spreadsheet
Spreadsheet
List
List
Priority matrix
Matrix
Notes
Rich notes
Finance
Finance
Habits
Habits
Companion chat
Companion chat
Dark theme
Dark theme

On a phone. Nix installs as an app, with the same views and a share target.

Board on a phone Calendar on a phone Note on a phone Habits on a phone Finance on a phone Companion chat on a phone

How it compares

Nix is for a workspace you run yourself: structured views, and a copy of the data you can take with you.

Nix Notion Obsidian
Where it runs Your machine or server, with Docker or Kubernetes Notion's hosted service A folder of Markdown on your devices. Sync is Obsidian Sync or your own
Licence AGPL-3.0, with permissions for plugins and your content Proprietary Proprietary. Free for personal use
Shape One item tree: lists, boards, calendars, sheets, habits, finance and the rest Pages and databases Notes, plus a large plugin ecosystem
Editing together Real-time CRDT editing, with presence, for a small group Real-time collaboration Files synced between devices
Leaving Lossless .nix archives, plus PDF, DOCX and Markdown. An Obsidian vault can be imported Markdown, HTML and CSV export The notes are already files
Tools nixctl and an MCP server. Publish a subtree as a static site The Notion API, and Notion Sites Plugins, and Obsidian Publish or your own site

Anytype and AFFiNE are the other projects people try for this. Anytype is local-first: the sync protocol is open source and a self-hosted node is documented, and the apps are source-available. AFFiNE is a self-hostable workspace of documents and a whiteboard. Nix keeps tasks, habits, journal, files, calendar and finance in that same tree, and adds the CLI, the MCP server and static-site publishing above.

Run it for real

Read deploy/install.sh before you pipe it to a shell. It needs Docker with the Compose plugin, curl, openssl, jq, and about 8 GB of memory for Docker. The stack runs Postgres, an object store, the identity provider and four Nix services (API, web, and one Node service for collaboration, the pet companion and the sites worker). A default Docker Desktop VM is often 2 to 4 GB, and a smaller limit thrashes. The script stops if a tool is missing, and warns when Docker has less than about 8 GB.

curl -fsSL https://raw.githubusercontent.com/sianachi/nixsites/main/deploy/install.sh | bash

Open http://nix.localhost in Chrome or Firefox and sign in with the details it prints. Safari does not resolve .localhost names: add 127.0.0.1 nix.localhost auth.nix.localhost to /etc/hosts first.

The same line with a public origin is a real install, using the images at ghcr.io/sianachi/nix:

curl -fsSL https://raw.githubusercontent.com/sianachi/nixsites/main/deploy/install.sh | bash -s -- https://nix.example.org

Point nix.example.org and auth.nix.example.org at the machine and leave ports 80 and 443 free.

The script writes every secret into ~/nix/nix.env and prints an administrator sign-in. Back that file up with the Docker volumes (nix-*); it cannot be regenerated.

Flags, what the installer starts, upgrades, Kubernetes and image tags are in docs/install.md.

Run it locally

You need Docker and mise.

git clone https://github.com/sianachi/nixsites.git && cd nixsites
mise install                       # Node, pnpm and .NET at the pinned versions
pnpm install --frozen-lockfile
pnpm dev                           # infrastructure, database, identity, then every service

Open http://localhost:5173 and sign in as dev@nix.localhost with NixDev-Password1!. These are local development credentials only.

pnpm dev is safe to re-run. Use bash scripts/dev.sh --help to start only some services, or --skip-stack when the Docker infrastructure is already up. If a port is taken, see .env.example.

Working in JetBrains Rider? node --experimental-strip-types scripts/rider-run-configs.mts writes Run/Debug configurations for each service.

Stack

ASP.NET Core 10 and Postgres 16 (row-level security, pgvector) · React 19, TypeScript, Tailwind v4 · Node 22 collaboration service (CRDT over WebSocket) · background jobs inside Core · OIDC login (Zitadel).

apps/web         React app, installable as a PWA
apps/collab      Collaboration service
apps/companion   Pet companion (codex app-server)
apps/node-host   One process for collab, companion and the sites worker
apps/cli         nixctl and the MCP server
apps/sites       Static site builder and server
backend/         Core API (ASP.NET) and the migrator
packages/        Shared libraries
deploy/          Compose manifests, images, seed and backup scripts

API

The REST API is a way to use Nix, with the web app, nixctl, and MCP. The API guide covers tokens, the first request in curl, Python, and TypeScript, resources, errors, and limits. The browsable reference generated from the OpenAPI document is docs/site/nix-docs/generated/reference.html. The same text is on the docs site once that guide is published there.

Contributing

Start with CONTRIBUTING.md: how to run Nix, check a change and open a pull request. Issues labelled good first issue are sized for a first change. AGENTS.md is the map of path-by-path rules for people and for assistants; it links the focused guides.

Day-to-day commands are in docs/development.md. Before opening a PR, run ./scripts/changed-path-checks.sh --working-tree and then ./scripts/validate-changed.sh --working-tree. Generated OpenAPI and client code is never edited by hand.

Licence

AGPL-3.0-only from v0.5, with additional permissions for plugins, your content and programs that use Nix. Using Nix, including at work, asks nothing of you; see what AGPL means for you. Releases up to v0.4.x stay under the MIT licence. A commercial licence is also available.

Star, or open an issue

If Nix is the workspace you wanted, star the repository so other people can find it. A bug or an idea belongs in an issue.

About

Self-hosted tool for managing notes, tasks, calendar, habits and the rest of life in one place

Topics

Resources

Code of conduct

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages