Your knowledge belongs to you.
Holder turns your knowledge into something you can own, inspect, automate and build upon.
The Holder Framework is a complete, local-first knowledge system: a set of open tools for storing, organising, connecting and working with your information without surrendering control of it to somebody else's platform.
It provides the services and interfaces that make Holder available to applications, scripts and people across different operating systems. Desktop clients, command-line tools and other software can all work with the same local knowledge through a stable OpenAPI interface, while your data remains in formats and repositories you control.
Holder Core provides the underlying algorithms, data structures and formats. Holder Framework builds on that foundation to provide the running system around them: the Holder daemon, holderctl, application lifecycle support, packaging and the machinery used to build and release Holder across platforms.
The goal is not simply to make another notes application. It is to provide a durable personal computing foundation for knowledge: open, interoperable, automatable and yours.
Download Holder for Windows, macOS or Linux from holder.team, or from the releases page.
contract/- Holder's public programming interface, declared in Python using Pydantic and FastAPI. It generates the C API, OpenAPI and code that connects implementations and clients.core/- Holder Core (libholder): the engine, its C API and its own CMake build, which does not depend on anything else here.daemon/- the Holder daemon (holderd), its HTTP API and its CMake build, which also buildsholderctl.api/- the generated HTTP schema (openapi.yaml),API_VERSIONand client documentation.cli/-holderctl, the command line client, includingholderctl ensure.common/- platform code shared by the daemon andholderctl.apps/desktop/gtk/- the Holder desktop app (GTK 4 and libadwaita, built with Meson), a client of the daemon's HTTP API on Linux, macOS and Windows.apps/mobile/android/- the Holder Android app (Kotlin and Compose), which embeds core through its C API and works without a daemon.python/- Python libraries:holder/, Holder for Python scripts that work with a running Holder installation, andkit/, Holder Kit, which embeds core for offline work.release/- candidate assembly and checks inrelease/staging/, signing, verification and publishing of releases, and the website (release/website/, www.holder.team), including its developer guides.
Holder uses contract-first development. Public operations, data types and their meaning are defined in the Python contract. The C API and OpenAPI specification are generated from it; core and the daemon implement the behavior behind those interfaces. Start an interface change in the contract, regenerate, and update implementations and affected clients together.
For component-specific work, start with its guide:
- Core and daemon, including core build options
- HTTP contract and GTK desktop
- Android and its development notes
- Holder for Python and Holder Kit
Everything in this repository (core, the daemon, holderctl, the desktop app, Holder Kit, the
Python client, and the staging and release tooling) has one version: the VERSION file
at the root. Native builds, Android and both Python packages read it directly in a full checkout.
Python source distributions include generated version/build metadata automatically.
For other source exports, prepare the local metadata using
release/scripts/version.py --prepare-source <core|daemon|desktop|kit|holder-python> --destination <source-directory>;
the Launchpad archive generator includes it automatically for core and Kit.
Change the version with release/scripts/version.py <version>, which updates only
the root file. Repository / Checks checks version derivation and source exports. The daemon's
API_VERSION is separate: it versions the HTTP contract that clients check, not
the release. Core's library SONAME is separate too.
Android derives its numeric versionCode from the same value; see its
version policy.
Holder Framework is free software, licensed under the GNU General Public License, version 3. See LICENSE.