## 1. Project Overview & Quickstart (anyproto/anytype-ts) # Anytype Desktop > **Local‑first, peer‑to‑peer & end‑to‑end‑encrypted knowledge OS for macOS, Windows & Linux.** [](https://github.com/anyproto/anytype-ts/releases) [](https://github.com/anyproto/anytype-ts/actions/workflows/build.yml) [](https://crowdin.com/project/anytype-desktop) [](LICENSE.md) Anytype is a **personal knowledge base**—your digital brain—that lets you gather, connect and remix all kinds of information. Create pages, tasks, wikis, journals—even entire apps—and *define your own data model* while your data stays **offline‑first, private and encrypted** across devices. ## ✨ Key Features - **Offline‑first, local storage** with optional peer‑to‑peer sync. - **Zero‑knowledge encryption** powered by *any‑sync*. - **Composable blocks**: text, databases, kanban, calendar & custom Types. - **Cross‑platform desktop client** built with Electron + TypeScript. - **Extensible** through a gRPC API and AI "Agents" (see [`AGENTS.md`](./AGENTS.md)). - **Open code** under the Any Source Available License 1.0. ## 📚 Table of Contents - [Quick Start](#-quick-start) - [Prerequisites](#-prerequisites) - [Building from Source](#-building-from-source) - [Development Workflow](#-development-workflow) - [Updating Middleware](#updating-middleware) - [Updating Protobuf Bindings](#updating-protobuf-bindings) - [Localisation](#-localisation) - [Contributing](#-contributing) - [Community & Support](#-community--support) - [License](#-license) ## 🚀 Quick Start Just want to try it? Grab the latest installer from the [releases page](https://github.com/anyproto/anytype-ts/releases) or head to **[download.anytype.io](https://download.anytype.io)** and log in with your *Any‑ID*. ## 🏗 Building from Source On ARM systems, node package `keytar` needs to be rebuilt during installation, so make sure that your system has a C++ compiler, Python3 and Python package `setuptools`. E.g. on Debian/Ubuntu: `sudo apt install python3-setuptools`. Alternatively, on any system, create a Python virtual environment (venv) and inside the venv: `pip install setuptools`. Then build from source inside the venv. **Linux** also needs the protobuf compiler **with** the well-known `.proto` files (used to generate the gRPC bindings in step 5): - **Fedora:** `sudo dnf install protobuf-compiler protobuf-devel jq` - **Debian / Ubuntu:** `sudo apt install protobuf-compiler libprotobuf-dev jq` ```bash # 1 – Clone & open this repository git clone https://github.com/anyproto/anytype-ts.git && cd anytype-ts # 2 - Install JavaScript dependencies bun install # 3 – Fetch the prebuilt middleware binary + proto/JSON assets into dist/ ./update.sh # 4 – Build the core engine cd .. && git clone https://github.com/anyproto/anytype-heart.git && cd anytype-heart make install-dev-js CLIENT_DESKTOP_PATH=../anytype-ts && cd ../anytype-ts # 5 – Generate protobuf bindings (middleware/) + service registry (src/ts/lib/api/service.ts) # From the anytype-heart checkout built in step 4: bun run generate:protos # …or, to skip the anytype-heart checkout entirely, generate from the assets fetched in step 3: # bash scripts/generate-protos.sh --from-dist # 6 - Update locale bun run update:locale # 7 – Build the Electron desktop app (see package.json for more options) bun run dist: ``` > Steps 3–5 produce `middleware/` and `src/ts/lib/api/service.ts`, which are git-ignored. Skipping step 5 causes `Failed to resolve import "./service" from src/ts/lib/api/dispatcher.ts`. See [Updating Protobuf Bindings](#updating-protobuf-bindings) and [`scripts/README.md`](scripts/README.md#protobuf-generation) for details. ### Environment flags | Variable | Effect | |--------------------------|--------------------------------------------------| | `ELECTRON_SKIP_NOTARIZE` | Skip macOS / Windows signing & notarizing | | `ELECTRON_SKIP_SENTRY` | Don’t upload sourcemaps to Sentry | ## 🧑‍💻 Development Workflow You can use [nix](https://nix.dev/install-nix) to install all the required dependencies at once. ```shell # open a shell with all the required dependencies nix develop --command $SHELL ``` Start the dev server with hot‑reload (builds Electron bundle, starts Vite, then launches Electron): ```bash bun run start:dev # Windows: bun run start:dev-win # add --user-data-dir=./my_dir to electron(-win) script in package.json if you want to use custom user data directory ``` When you close Electron, the Vite dev server is automatically stopped. For browser-based development without Electron: ```bash bun run start:web ``` See [Web Mode](./docs/src/ts/lib/web/README.md) for details. ### Useful commands ```bash bun run build # Production build (Vite) bun run build:dev # Development build (Vite) bun run typecheck # TypeScript type checking bun run lint # Run linters (Biome + ESLint) ``` ### Environment variables | Name | Purpose | |--------------|---------------------------------------------------| | `SERVER_PORT`| Vite dev server port (default: `8080`) | | `ANYPROF` | Expose Go `pprof` on `localhost:` | ### Web Clipper Extension Build and switch manifest for different browsers: ```bash bun run build:ext bun run ext:manifest:firefox bun run ext:manifest:chromium ``` ### Updating Middleware The middleware version is pinned in `middleware.version`. To fetch a pre-built middleware binary and its protobuf/JSON assets: ```bash ./update.sh ``` This downloads the `anytype-heart` release matching the version in `middleware.version`, extracts the `anytypeHelper` binary into `dist/`, and copies protobuf definitions and generated JSON into `dist/lib/`. For CI environments (requires GitHub credentials): ```bash ./update-ci.sh --user= --token= --os= --arch= --middleware-version= ``` ### Updating Protobuf Bindings The TypeScript protobuf bindings (`middleware/`) and the gRPC service registry (`src/ts/lib/api/service.ts`) are **generated and git-ignored** — a fresh checkout has neither, and the dev/build will fail with `Failed to resolve import "./service" from src/ts/lib/api/dispatcher.ts` until you generate them. **From a local [anytype-heart](https://github.com/anyproto/anytype-heart) checkout** (expected at `../anytype-heart`, requires the Go toolchain): ```bash bun run generate:protos ``` **Without an anytype-heart checkout** (uses the `.proto` files downloaded by `./update.sh` into `dist/lib/protos/`): ```bash ./update.sh bash scripts/generate-protos.sh --from-dist ``` **Prerequisites:** `bun install` must have been run (for `ts-proto`), and `protoc` **plus the well-known `google/protobuf/*.proto` files** must be installed: - **Fedora:** `sudo dnf install protobuf-compiler protobuf-devel` - **Debian / Ubuntu:** `sudo apt install protobuf-compiler libprotobuf-dev` - **macOS:** `brew install protobuf` > The `-devel` / `-dev` package is required on Linux — without it `protoc` reports `google/protobuf/struct.proto: File not found`. See [`scripts/README.md`](scripts/README.md#protobuf-generation) for the full Linux first-time setup and troubleshooting. ## 🌍 Localisation Translations live on [Crowdin](https://crowdin.com/project/anytype-desktop). Pull the latest locale files with: ```bash bun run update:locale ``` ## 🤝 Contributing We ♥ contributors! Please read our [Contributing Guide](https://github.com/anyproto/.github/blob/main/docs/CONTRIBUTING.md) and follow the [Code of Conduct](https://github.com/anyproto/.github/blob/main/docs/CODE_OF_CONDUCT.md). > **Security issues?** Don’t open public issues—email **security@anytype.io** and see our [Security Guide](https://github.com/anyproto/anytype-ts?tab=security-ov-file). ## 💬 Community & Support - **Forum** – - **Docs** – - **Blog** – ## 📝 License Made by **Any** — a Swiss association 🇨🇭 Licensed under the **Any Source Available License 1.0**. ## 2. Official Technical Reference & Guides (anyproto/docs) # Welcome Anytype is a safe haven for your digital life. We believe your thoughts, plans, and private conversations should belong to you—and only you. Most apps store your data to view, scan, monetize, and control it. You're essentially asking for permission to access your own digital life. Anytype puts you back in charge. We’ve built a tool where you are the sole owner of your digital world.
## What makes Anytype different? * **Local-First**: Everything you create lives on your device first, not on a corporate server. You can work completely offline, sync across your own devices, or self-host your data. Whether you’re on a remote mountain or in a high-security office, you remain in control. * **End-to-End Encryption**: Your data is protected by a digital vault where it is scrambled into a secret code. Only you, and the people you explicitly choose to share with, can access the information. Nobody, not even the team at Anytype, can see what you’re working on. * **No Lock-In**: You are never a hostage to a subscription or a service provider. You have access to your data and the Anytype software forever. Because you aren't dependent on any vendor, nobody can ever switch off your access to your own digital life—not even us. ## Quick Overview In this short video, you will gain an overview of Anytype and how to get started. {% embed url="https://www.youtube.com/watch?v=DpPEl8VTPjg" %} ## How does Anytype work? Anytype lets you create different spaces for your work and personal life. Because each space is kept isolated, you never have to worry about your information being shared with the wrong people. * **Personal Spaces**: A private sanctuary for your eyes only. Use these to organize your diary, manage to-do lists, and store important documents. * **Collaborative Spaces**: Shared environments where you can work seamlessly with family, project teams, or entire communities. Chats and discussions live directly inside your spaces, allowing you to hold private conversations right alongside your documents, tasks, and media. ## What powers Anytype? Anytype is powered by [AnySync](https://tech.anytype.io/any-sync/overview), which is an [open-source protocol](https://github.com/anyproto) we developed that supports high-performant collaboration over encrypted data and is offline-first. With every architectural choice, we aim to make [fundamental digital freedoms](https://youtu.be/6Hyr881Xi8A?si=tVftb8x9V5koMt0U) unconditional. Here you can read more of our thoughts on [cloud vs. local first internet](https://blog.anytype.io/from-cloud-to-local-first/). *** ## Join the Community Have questions or ideas? Join our [Community Forum](https://community.anytype.io/).