Capture what you did, when you did it โ without ever leaving the shell.
Contents
- Why devlog?
- Features
- Install
- Usage
- How your data is stored
- Project layout
- Building from source
- Roadmap
- Contributing
- License
Why devlog?
Standups, retros, performance reviews, and "wait, what did I actually ship last
Tuesday?" all want the same thing: a timestamped trail of your work. devlog
gives you that with two commands and zero ceremony. It is local-first, has
no network calls, and keeps everything in a single SQLite file you own.
$ devlog add "Refactored the store layer"
Added item "Refactored the store layer"!
That is the whole ritual. Type the note, hit enter, get back to work.
Features
| ๐ Frictionless capture | One short command โ devlog add "โฆ" โ and the thought is saved. |
| ๐ Full history at a glance | devlog list replays every entry, oldest to newest. |
| ๐๏ธ Local-first SQLite | Your journal lives in ~/.devlog/entries.sqlite. No cloud, no account. |
| ๐ Time-ordered UUID v7 | IDs encode creation time, so entries sort naturally by when they happened. |
| ๐ Honest timestamps | Stored in UTC (RFC 3339) and shown as YYYY-MM-DD HH:MM UTC. |
| ๐ฆ One small binary | SQLite is bundled at build time โ nothing to install alongside it. |
| ๐ Quiet by design | No telemetry, no background process, no network. |
Install
From crates.io
The crate is published as
d3vlog, but it installs a binary nameddevlog.
From source
Requirements: a Rust toolchain new enough for the 2024 edition (Rust 1.85+)
and a C compiler โ rusqlite compiles a
bundled copy of SQLite, so you do not need SQLite installed on your system.
Usage
$ devlog --help
A tiny developer journal for the terminal
Usage: devlog <COMMAND>
Commands:
add Add a new journal entry
list List journal entries
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
| Command | What it does | Example |
|---|---|---|
devlog add <message> |
Append a new entry, stamped with the current UTC time. | devlog add "Cut the v0.2 release" |
devlog list |
Print every entry in creation order. | devlog list |
devlog --version |
Show the installed version. | devlog --version |
devlog --help |
Show help (works on subcommands too). | devlog add --help |
A typical session
$ devlog add "Ship the new auth flow"
Added item "Ship the new auth flow"!
$ devlog add "Fix flaky test in store.rs"
Added item "Fix flaky test in store.rs"!
$ devlog list
[2026-06-23 09:14 UTC] 0190a1b2 Ship the new auth flow
[2026-06-23 11:02 UTC] 0190a3c4 Fix flaky test in store.rs
Each list line is [<created_at> UTC] <short-id> <message>, where the short
id is the first 8 characters of the entry's UUID v7.
How your data is stored
Everything lives in one SQLite database, created on first run:
~/.devlog/entries.sqlite
The schema is a single table:
(
id TEXT PRIMARY KEY NOT NULL,
created_at TEXT NOT NULL CHECK (datetime(created_at) IS NOT NULL),
message TEXT NOT NULL CHECK (length(trim(message)) > 0)
);
| Column | Type | Notes |
|---|---|---|
id |
TEXT |
UUID v7 โ time-ordered, generated per entry. |
created_at |
TEXT |
UTC timestamp in RFC 3339; the CHECK rejects anything SQLite can't parse as a datetime. |
message |
TEXT |
The note. Must be non-empty after trimming whitespace. |
Because it is plain SQLite, you can always inspect or back up your journal with ordinary tools:
Project layout
devlog/
โโโ Cargo.toml # crate: d3vlog ยท binary: devlog
โโโ src/
โโโ main.rs # entry point โ parse args, dispatch commands
โโโ cli.rs # clap definitions for `add` and `list`
โโโ store.rs # SQLite connection, schema, reads & writes
โโโ data.rs # data module root
โโโ data/
โโโ entry.rs # DevLogEntry model + display formatting
The dependencies are intentionally few:
clapโ argument parsing (derive API)rusqliteโ SQLite access (bundled)chronoโ UTC timestampsuuidโ UUID v7 identifiers
Building from source
# Run without installing
# Optimized build
Roadmap
Ideas under consideration โ not yet implemented:
-
devlog search <term>โ filter entries by text -
devlog rm/devlog editโ remove or amend entries - Date filters (
--since,--today,--week) - Tags / projects per entry
- Export to Markdown or JSON
- A scrollable TUI view
Have a different itch? Open an issue.
Contributing
Issues and pull requests are welcome.
Please keep changes small and focused, and run cargo fmt and cargo clippy
before opening a PR.
License
Licensed under the Apache License, Version 2.0. See LICENSE or
https://www.apache.org/licenses/LICENSE-2.0 for the full text.