dnote is a free, open source note taking & knowledge management project written in Go and released under Apache-2.0. It has 3,083 GitHub stars, 124 forks and 41 open issues, and was last pushed 2 months ago. On this registry it ranks #30 of 47 tracked projects in Note Taking & Knowledge Management, with 5 head-to-head comparisons available.

What is dnote?

Dnote is a free, open-source, single-binary command line notebook for developers who want their notes kept as plain files they own rather than inside a proprietary hosted service.

What it is

Dnote is a notebook that lives in the terminal. It is written in Go and ships as a single binary with no dependencies, and it has been maintained under the Apache-2.0 licence since 2017. Notes are organised into "books" — a book is simply a named collection such as linux — and the whole notebook is stored in one SQLite file that is portable, searchable, and completely under the user's control. An optional self-hosted server adds synchronisation between devices and exposes REST API access to the same notes.

The problem it solves is the split between quick terminal note-taking and durable, portable storage. Taking a note while working in a shell usually means leaving the shell, pasting into a hosted note app, or dropping text into a scratch file that is never searchable again. Dnote occupies the ecosystem of developer tools and personal knowledge bases as the piece that replaces ad-hoc text files and closed, account-bound note services. Rather than a hosted product, it provides a local notebook in one SQLite file plus an optional server the user runs, so the notes remain readable without any vendor and the sync service is a choice rather than a requirement.

Key capabilities

  • Add notes from the shell with dnote add linux -c "Check disk usage with df -h", or omit -c to launch the editor instead.
  • Read a book with dnote view linux, listing the notes collected under that book.
  • Run full-text search across notes with dnote find "disk usage".
  • Synchronise between devices with dnote sync, backed by an optional self-hosted server.
  • Store everything in one SQLite file that is portable and searchable, with no external database.
  • Install and run as a single binary with no dependencies on Linux, macOS, FreeBSD, and Windows.
  • Run the optional server as a binary with SQLite embedded, requiring no database setup, or as the dnote/dnote:latest container image, which also provides REST API access.

Who uses it and how

  • Individual developers on Linux, macOS, FreeBSD, or Windows who install through the shell script, Homebrew, or a downloaded release binary and keep notes beside their work.
  • Developers who keep separate books for separate subjects — a linux book alongside others — and retrieve entries by browsing a book or by full-text search.
  • Self-hosters who want notes on more than one machine and therefore run the optional server themselves.
  • Operators deploying the sync server as a container with dnote/dnote:latest on port 3001, mounting ./dnote_data:/data so the SQLite data survives restarts.
  • Users who need programmatic access to their notes and use the server's REST API rather than the CLI alone.

Getting started

Install on Linux, macOS, FreeBSD, or Windows with curl -s https://www.getdnote.com/install | sh, or on macOS with brew install dnote, or by downloading a binary from the releases page. The optional sync server runs from a compose.yml using the dnote/dnote:latest image with docker-compose up -d, or from a manual binary installation described in the documentation.

How it compares

No comparable tools are named in the facts supplied here, and no list of paid products it replaces is provided, so Dnote stands alone in this registry. Its position is defined by its own terms: Apache-2.0 licensing, a local SQLite file the user controls, and an optional self-hosted server instead of a hosted account.

When to use it — and when not to

Choose Dnote if a terminal-first notebook in a single portable SQLite file fits how you work, and if you are willing to operate the optional sync server yourself when you need notes on several devices. The server needs to be run and its data volume managed, though it embeds SQLite and requires no separate database, and nothing in the supplied documentation describes encryption of the notes file at rest. Users who do not want to run any server, or who need a graphical or non-CLI interface, should look elsewhere, since the project as documented here is a command line tool with notes held in one file.

project readme (upstream, from github) — read inline

Dnote

Build Status

Dnote is a simple command line notebook. Single binary, no dependencies. Since 2017.

Your notes are stored in one SQLite file - portable, searchable, and completely under your control. Optional sync between devices via a self-hosted server with REST API access.

# Add a note (or omit -c to launch your editor)
dnote add linux -c "Check disk usage with df -h"

# View notes in a book
dnote view linux

# Full-text search
dnote find "disk usage"

# Sync notes
dnote sync

Installation

# Linux, macOS, FreeBSD, Windows
curl -s https://www.getdnote.com/install | sh

# macOS with Homebrew
brew install dnote

Or download binary.

Server (Optional)

Server is a binary with SQLite embedded. No database setup is required.

If using docker, create a compose.yml:

services:
  dnote:
    image: dnote/dnote:latest
    container_name: dnote
    ports:
      - 3001:3001
    volumes:
      - ./dnote_data:/data
    restart: unless-stopped

Then run:

docker-compose up -d

Or see the guide for binary installation.

Documentation

See the Dnote doc.

Frequently asked questions

Is dnote free to use?

dnote is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does dnote do?

A simple command line notebook

What is dnote written in?

dnote is primarily written in Go. Its source is publicly available at https://github.com/dnote/dnote, and it has 3,083 GitHub stars.