Commands
Every command with what it does, what it prints, its exit codes, the files it touches and its edge cases, followed by the binary's own --help text so the reference cannot drift from the code.
Every command runs inside a git repository and finds it by searching upward from the current directory, like git does. Output shown here is what madelog 0.1.0 prints, with the home directory shortened to /Users/ana. The --help text of every command, captured from the binary by landing/scripts/gen-commands.sh, is at the end of this page. If a flag is not there, it does not exist.
Exit codes
| Code | When |
|---|---|
| 0 | The command did its job. --help, -h, --version, -V and madelog help <command> also exit 0 and print to standard output |
| 1 | The command ran and failed: no .madelog/ yet, a broken chain, an invalid config value, an aborted preview, a refused or unreachable server, an editor that did not save |
| 2 | Wrong usage: an unknown command, a bad flag, a missing argument, --record-ai-sessions together with --no-record-ai-sessions. Also madelog ask and madelog model pull, which are not available in this version |
Errors go to standard error, start with madelog:, and name the problem, then the fix. madelog hook post-commit is the one exception to the table: it exits 0 whatever happens, so a recording problem can never fail a commit.
$ madelog frobnicate
error: unrecognized subcommand 'frobnicate'
Usage: madelog <COMMAND>
For more information, try '--help'.
$ madelog hide
error: the following required arguments were not provided:
<EVENT_ID>
Usage: madelog hide <EVENT_ID>
For more information, try '--help'.Both exit 2. Every command that needs the log and finds none prints the same line and exits 1:
madelog: no madelog log in this repository yet — run `madelog init` first (/Users/ana/projects/ledger/.madelog/log.db is missing)Outside a git repository: madelog: not inside a git repository (could not find repository at '/Users/ana'): run `git init` first.
Where things are
| Path | What |
|---|---|
.madelog/log.db | The event log, SQLite, append-only. log.db-wal and log.db-shm sit next to it |
.madelog/config.toml | Settings; see Configuration |
.madelog/intent.md | Your answers from madelog init as Markdown, a copy for you; the page reads the intent event |
.madelog/site/index.html | The rendered page, written by every madelog publish |
.madelog/bin/madelog | The binary, in a per-project install only |
.git/hooks/post-commit | Two lines under # madelog-cli:post-commit |
.git/info/exclude | One line, .madelog/ |
~/.config/madelog/device.key | The ed25519 key that signs a publish, mode 0600 |
init
Sets madelog up in the repository: asks four questions, writes .madelog/, appends the intent event, installs the hook, creates the device key.
$ madelog init --what "A CLI that reconciles bank CSV exports against invoices" \
--for-whom "A small accounting firm that closes its books by hand" \
--tools "claude-code, cursor" --record-ai-sessions
madelog is recording in /Users/ana/projects/ledger/
.madelog/intent.md what you are building, in your own words
.madelog/log.db the event log, hash chained
.madelog/config.toml settings, including privacy.redact
Your commits are recorded from now on. Nothing leaves this machine.
Next: `madelog note "why you did it that way"` after a decision.
Git AI is not on your PATH, so AI sessions stay empty. Install it with: curl -sSL https://usegitai.com/install.sh | bashWithout flags it asks What are you building? , Who is it for? , Which AI tools do you use? (comma separated) and Record AI sessions from Git AI? [Y/n] on standard output and reads one line each. An empty answer to the last one means yes. --yes asks nothing: flags given are used, the rest are empty strings, and AI sessions are recorded. --tools is split on commas and trimmed.
Files: creates .madelog/intent.md, .madelog/config.toml (loaded first, so an existing file keeps its values; project.name is set to the directory name when empty) and .madelog/log.db; appends .madelog/ to .git/info/exclude once; appends its two lines to .git/hooks/post-commit once, creating the file with #!/bin/sh and making it executable if it did not exist; creates ~/.config/madelog/device.key if there is none.
Edge cases:
- Run again. Everything above is idempotent, the event included. In a repository that already has an
intentevent,initwith none of--what,--for-whomor--toolsasks nothing, appends nothing and leavesintent.mdalone; it printsmadelog is already recording in /Users/ana/projects/ledger/andNothing changed. Pass --what, --for-whom or --tools to record a new intent., exit 0. Give any of those three and a newintentevent is appended with the answers merged over the newest one: the flags you passed win, the ones you left out carry over,record_ai_sessionsincluded unless--record-ai-sessionsor--no-record-ai-sessionssays otherwise.intent.mdis rewritten to match. The old intent stays in the chain, and the hook, the page andmadelog exportall read the newest one. - No commits yet. Allowed. The intent event has no
commit_sha, and the hook starts recording at the first commit. - An existing hook. Kept. madelog's lines go at the end, after a blank line. A hook managed by another tool that rewrites the file later removes them; run
initagain to add them back. core.hooksPathset. madelog writes to.git/hooks/regardless, and git will not run it. Add the two lines to the hook in the configured directory by hand.- Bare repository. Refused:
madelog: this is a bare git repository; madelog needs a working tree. - The hook line.
madelog hook post-commit || trueunless the binary runs from<repo>/.madelog/bin/, in which case its full path is written, quoted when it has spaces. SeeMADELOG_EXEin Configuration.
Exit codes: 0; 1 outside a git repository or when a file cannot be written; 2 when both AI-session flags are given.
onboard
Prints the banner and three sentences about what madelog records, checks for git, git-ai and ollama on PATH, and offers to run init when you are inside a repository that has no log yet. Safe to run at any time.
$ madelog onboard
+---+
| +-+-+ madelog - Proof of Process
+-+-+ | Records how your project came together.
+---+
madelog records three things: the commits you make, the AI sessions Git AI attributes to them, and the one-sentence decisions you write with `madelog note`.
All of it stays on this machine, in .madelog/log.db, until you run `madelog publish`.
No keystrokes, no screenshots, no files git ignores. `madelog export` hands you everything back as JSON.
git found /opt/homebrew/bin/git
git-ai missing Without it, AI sessions stay empty. Install it with: curl -sSL https://usegitai.com/install.sh | bash
ollama found /usr/local/bin/ollama
Set up madelog in this repo now? [Y/n] n
Nothing changed. Run `madelog init` when you are ready.- Outside a repository the last block is
You are not inside a git repository, so there is nothing to record yet.followed bygit initandmadelog init, exit 0. - In a repository that already has
.madelog/log.db:madelog is already set up in /Users/ana/projects/ledger/.and two suggestions,madelog logandmadelog verify.--yesand--projectdo not change that — nothing is appended andintent.mdis left alone. --yesanswers yes and then runsinitwith--yes, so the intent is empty.--projectdoes the same and is what the per-project installer runs. An interactive yes runsinitwith its questions.- The box-drawing banner needs a terminal,
TERMother thandumb, and a UTF-8 locale (Windows Terminal on Windows). Everything else gets the ASCII banner shown above.
Files: none of its own; init writes what it writes. Exit code: 0, or whatever init returns.
note
Appends one decision event, anchored to HEAD. No editor, no confirmation.
$ madelog note "chose SQLite over Postgres: one binary, no service to run"
noted at ec66d42
$ madelog note --private "the client sends CSVs with a BOM; strip it before parsing"
noted at ec66d42 (private, never published)The words after note are joined with single spaces, so quoting is optional unless the sentence contains shell characters. Leading and trailing whitespace is trimmed.
- Empty.
madelog: a note needs a sentence: madelog note "why you did it that way", exit 1. - No commits yet. Allowed; the event has no anchor and the output is just
noted. --private. The event is chained, listed bymadelog logwith(private), counted by nothing on the page, absent from the preview and the summaries. There is no way to make it public later other than writing a new note.
Files: .madelog/log.db. Exit codes: 0; 1 without a log or with an empty sentence.
hook post-commit
Records the commit HEAD points at as a commit event and, when the newest intent has record_ai_sessions: true, one ai_session event per session in the commit's Git AI note. Git runs it; you do not, except to record a commit the hook missed.
$ git commit -m "feat: reconcile skeleton"
madelog: Git AI is not installed, so no AI sessions are recorded.
madelog: install it with: curl -sSL https://usegitai.com/install.sh | bash
[main ec66d42] feat: reconcile skeleton
2 files changed, 7 insertions(+), 1 deletion(-)On success it prints nothing. Everything it says goes to standard error and starts with madelog:. It always exits 0.
.madelog/missing. Returns silently. The hook may outlive the directory.- Already recorded. A commit sha that already has a
commitevent is skipped, so running the hook twice, or amending and re-running, adds nothing. An amended commit has a new sha and is recorded as a new event; the old one stays. - No note, Git AI installed. Nothing printed. A commit with no AI in it has no note.
- No note, Git AI missing. The two lines above, once per process.
- Unreadable note.
madelog: a Git AI note could not be read, so its AI sessions are skipped (<reason>); the commit is still recorded. - Binary not found. With the hook line
madelog hook post-commit || trueand nomadelogon the PATH git uses, the shell prints.git/hooks/post-commit: line 5: madelog: command not foundand the commit still goes through. Nothing is recorded. GUI clients often start hooks with a short PATH; a per-project install avoids this. - Anything else.
madelog: could not record this commit: <reason>, exit 0.
Files: .madelog/log.db; reads .madelog/config.toml for privacy.redact and, for Claude Code sessions, ~/.claude/projects/. Exit code: always 0.
log
Prints every event in order.
$ madelog log
1 2026-09-18T07:53:48.617Z intent 9659671 A CLI that reconciles bank CSV exports against invoices
2 2026-09-18T07:53:48.915Z commit ec66d42 feat: reconcile skeleton
3 2026-09-18T07:53:48.935Z decision ec66d42 chose SQLite over Postgres: one binary, no service to run
4 2026-09-18T07:53:48.943Z decision ec66d42 the client sends CSVs with a BOM; strip it before parsing (private)
5 2026-09-18T07:53:49.023Z commit 77433d9 feat: match bank rows to invoices by amount and reference
6 2026-09-18T07:53:49.023Z ai_session 77433d9 claude-code: Write src/reconcile.rs: load two CSVs (amount, reference), index invoices by amount in cents, and count bank rows that match an invoice by amount and reference.Columns: seq, ts, kind, the first seven characters of commit_sha when there is one, and a title: the intent's what, a commit's subject line, <tool>: <first line of the prompt> or <tool>: (prompt not recorded) for a session, the decision text, <pattern>: <detail>, week of <start> for a summary, hid <id> for a hide. An empty log prints nothing recorded yet.
--json prints a JSON array of every event with every field, pretty-printed. Use it to find an event's id:
$ madelog log --json | grep -B4 '"kind": "ai_session"' | grep '"id"'
"id": "01a0b381-e2df-7002-92b7-c2716ed68011",Files: reads .madelog/log.db. Exit codes: 0; 1 without a log.
verify
Recomputes the chain from the first event and prints the root.
$ madelog verify
chain ok
8 events, root fe97dbc626e14dc52a58c6f49352bf0467bed76c7ae4dd4aadc02729ae4f9265On the first break it prints one line on standard error and exits 1: chain broken at seq 3: hash does not match the event contents (18 events read). The three reasons and how to produce each are in Concepts. An empty log is chain ok, 0 events, and the genesis root of 64 zeros.
Files: reads .madelog/log.db. Exit codes: 0 intact; 1 broken or no log.
export
Writes everything madelog holds about the repository as one JSON document.
$ madelog export ledger-export.json
wrote 16 events to /Users/ana/projects/ledger/ledger-export.json
$ madelog export | head -5
{
"version": 1,
"exported_at": "2026-09-18T07:53:49.657Z",
"intent": {
"what": "A CLI that reconciles bank CSV exports against invoices",The path is relative to the current directory. Without one, the document goes to standard output. The shape is {version, exported_at, intent, intent_md, config, root, events}; Privacy describes each field. The export is not signed and is not something the server accepts; it is for you.
Files: reads .madelog/log.db, .madelog/intent.md, .madelog/config.toml; writes the file you name. Exit codes: 0; 1 without a log or when the path cannot be written.
hide
Appends a hide event for one ai_session. The session stays in the chain; the page withholds it.
$ madelog hide 01a0b381-e2df-7002-92b7-c2716ed68011
hidden. The session stays in the chain; the page will say one session is hidden.- Any other kind:
madelog: only ai_session events can be hidden; event `01a0…` is a commit, exit 1. - Unknown id:
madelog: no event with id `…` in this log, exit 1. - Same session twice: nothing is appended.
already hidden. Nothing was recorded; the page already leaves this session out., exit 0. The page still counts one hidden session. There is no unhide.
The preview's h key runs this command. Files: .madelog/log.db. Exit codes: 0; 1.
config get, set, list
Reads or changes .madelog/config.toml. list prints every key, get prints one value, set validates, saves and prints the new value. Errors exit 1 and change nothing. Every key, every validation message and the file's layout are in Configuration.
$ madelog config set llm.provider none
llm.provider = none
$ madelog config get llm.provider
noneconfig needs a git repository but not a log: it works after git init and before madelog init, creating .madelog/config.toml on the first set. Files: .madelog/config.toml. Exit codes: 0; 1.
publish
Brings patterns and summaries up to date, shows the preview, renders .madelog/site/index.html, and unless --local is given, signs the chain root and uploads the page.
$ madelog publish --yes
1 pattern in this log:
fix_after_ai 77433d9 8a322f5 8a322f5 reworked AI-written code in src/reconcile.rs less than a minute after 77433d9.
nothing new to record
1 moment for the page:
1. Fixing AI-written code in src/reconcile.rs (fix_after_ai)
77433d9 ("feat: match bank rows to invoices by amount and reference") carried AI-written lines in src/reconcile.rs. Less than a minute later, 8a322f5 went back to the same code: "fix: equal amounts with a different reference were counted a...". Git AI attributed 27 lines in 77433d9 to the model.
every week already has a summary — run `madelog summarize --force` to write them again
page /Users/ana/projects/ledger/.madelog/site/index.html
page /Users/ana/projects/ledger/.madelog/site/index.html
verify https://madelog-server-production.up.railway.app/v1/verify/north-fable-4xt3
published https://madelog-server-production.up.railway.app/p/north-fable-4xt3
Send that link. `madelog unpublish` takes it down again.The steps, in order:
- Refuse outside a repository with a log:
madelog: there is no madelog log in /Users/ana/projects/ledger/ — run `madelog init` first, then commit something. `madelog publish` has nothing to publish until then. - Run
analyzeandsummarizeexactly as the commands do, output included. With fewer than 15 events printwarning: this project has 13 events so far, and a page built from fewer than 15 events says very little. It will still publish. Keep committing and run `madelog publish` again later. - Open the preview, unless
--yesis given or standard output is not a terminal.Entercontinues;qorEscstops withpublish aborted, exit 1, nothing rendered or sent. Sessions hidden and summaries edited in the preview are appended to the log before anything is rendered, and the lines those commands printed are shown after the preview closes. - Render the page to
.madelog/site/index.htmland print its path. With--local, printnot published. Run `madelog publish` without --local to put it online.and stop, exit 0. - Refuse a page over 2 MiB before uploading it:
madelog: the page is <size> MB and the server accepts 2.0 MB at most. It is written at …; hide a session or two with `madelog hide` and publish again. - Register the device (
POST /v1/devices) whenserver.device_idis empty, signroot + "\n" + published_ts + "\n" + slug(slug empty on a first publish) andPOST /v1/pages. On 404 (the server no longer knows the device id) register again and retry once. - Save
server.device_idandserver.slug, render once more with the server's confirmation in the badge, and upload again to the same slug. That is whypageis printed twice. A failure at this last step is a warning, not an error:warning: the page is online, but the confirmed badge could not be sent to it (…). Visitors see "not yet published" until the next `madelog publish`.
Flags: --local stops after step 4 and never opens a connection; --server <url> replaces server.url for this run (a bare host gets https://); --yes skips the preview. An empty --server "" is a typo, not a request to fall back to server.url: it is refused before anything is rendered or sent, `--server` needs a url, for example `--server https://madelog.app`. Leave the flag off to use `server.url`, or pass `--local` to stay offline., exit 2 (no madelog: prefix, like the other exit-2 messages).
Failures after the page was written locally, all exit 1:
- Nothing answering:
madelog: could not reach http://127.0.0.1:9/v1/devices: io: Connection refused (os error 61). Your page is written locally either way. - A web server that is not madelog:
madelog: the server has nothing at that address (registering this device). - 401:
madelog: the server did not accept this device's signature. Your device key at ~/.config/madelog/device.key does not match the key it has on file — register again from this machine, or publish from the machine that first published this page. The server said: signature does not verify for this device - 403:
madelog: that page belongs to another device. Publish from the machine that created it, or run `madelog unpublish` there first. The server said: this slug belongs to another device - 413:
the page is larger than the 2 MB the server accepts. Trim the project page, or publish fewer sessions. - 5xx:
the server is having trouble. Try again in a minute; your page is already written locally. - No server at all (
server.urlempty and no--server):madelog: no server to publish to. Set one with `madelog config set server.url <url>`, pass `--server <url>`, or stay offline with `madelog publish --local`.
Files: .madelog/log.db (pattern, summary, hide events), .madelog/site/index.html, .madelog/config.toml (server.device_id, server.slug); reads ~/.config/madelog/device.key. Exit codes: 0; 1; 2 for an empty --server.
unpublish
Sends a signed delete for the page this repository owns and clears server.slug.
$ madelog unpublish
north-fable-4xt3 is gone from https://madelog-server-production.up.railway.app. The chain is untouched, and `madelog publish` can put it back.- No slug in the config:
madelog: this repository has no published page. `madelog publish` first, or check `madelog config get server.slug`., exit 1. - The server has already forgotten the page (404): treated as success, the slug is cleared.
- Another device's page (403), a wrong key (401), an unreachable server: the same messages as
publish, exit 1, the slug is kept.
--server <url> names the server the page is on; an empty --server "" is refused with the same message publish gives. Files: .madelog/config.toml; reads the device key. Exit codes: 0; 1; 2 for an empty --server.
analyze
Runs the four pattern rules, appends a pattern event for each new match, and prints the moments the page would show.
$ madelog analyze
4 patterns in this log:
fix_after_ai fb7eeec d366a14 d366a14 reworked AI-written code in src/import.rs two hours after fb7eeec.
retry fcd9b5f b17e06a 1595716 Three commits in 50 minutes reworked the same file.
revert ea23143 50f2f57 Reverted 2 files changed in ea23143 one hour earlier.
stall 50f2f57 72ddd54 After six days without commits, 72ddd54 changed 12 files (444 lines).
recorded 4 new pattern events
4 moments for the page:
1. Fixing AI-written code in src/import.rs (fix_after_ai)
fb7eeec ("feat: csv import with BOM handling") carried AI-written lines in src/import.rs. Two hours later, d366a14 went back to the same code: "fix: importer dropped the last row when the file has no trai...". Git AI attributed 51 lines in fb7eeec to the model.
...The pattern line shows up to three short shas and +N for the rest. A second run finds the same patterns and prints nothing new to record. With nothing to find: no patterns yet — keep committing and no moments yet — a moment needs a fix after AI, a decision that changed the shape of the project, or a long gap. --json prints {"moments": [...], "patterns": [...]} with full shas and the event ids each moment refers to. Rules and thresholds: Concepts.
Files: .madelog/log.db. Exit codes: 0; 1 without a log.
summarize
Writes a summary event for every week that has none, from Ollama or the template.
$ madelog summarize
Ollama at http://localhost:11434 has no model `qwen3:4b`; writing the summaries from the template (run `ollama pull qwen3:4b` to use it)
week 1 2026-09-14 to 2026-09-20 (generated) heuristic 01a0b381-e41b-73af-9c25-190f485d0fbd
In the week of 2026-09-14 you made 4 commits over 1 day. Most of the changes landed in src/reconcile.rs, src/main.rs and .gitignore.
You wrote down 1 decision: chose SQLite over Postgres: one binary, no service to run.
The analysis found 1 pattern that week: a fix after an AI session (8a322f5 reworked AI-written code in src/reconcile.rs less than a minute after 77433d9).
edit any of them with `madelog summary edit <id>`Flags: --week N limits the run to one week; --force rewrites weeks that already have a summary. Every notice, error and the exact request sent to Ollama are in Summaries. Files: .madelog/log.db; reads .madelog/config.toml; talks to llm.host, OLLAMA_HOST or localhost:11434, in that order, unless llm.provider is none. Exit codes: 0; 1 without a log, for a week that does not exist, or when llm.provider is ollama and Ollama or the model is missing.
summary edit
Opens one summary in your editor and appends what you saved as a new summary event with generated_by: user.
$ madelog summary edit 01a0b381-e41b-73af-9c25-190f485d0fbd
week of 2026-09-14 to 2026-09-20 (edited by you) 01a0b381-e442-718d-91c3-12e4160b580d
This week I built the matcher and fixed the equal-amount bug the same afternoon.
I wrote down why SQLite: one binary, nothing to operate.Unchanged text: unchanged — nothing appended, exit 0. Empty text, an editor that exits non-zero, or an id that is not a summary: exit 1 with the messages listed in Summaries. The editor is MADELOG_EDITOR, EDITOR, VISUAL or vi. Files: .madelog/log.db, a temporary file in the system temp directory. Exit codes: 0; 1.
model pull, ask
Both exist because a later version fills them in. In this version:
$ madelog model pull
`madelog model pull` is not available in this version
$ madelog ask "why did I choose sqlite"
`madelog ask` is not available in this versionExit code 2, nothing written.
Help text, verbatim
madelog
madelog runs alongside git. It records your commits, your AI sessions and the one-sentence decisions you write down, chains them with sha256, and turns them into a page you can send to a company. Nothing leaves your machine until you run `madelog publish`.
Usage: madelog <COMMAND>
Commands:
init Set up madelog in this repository
onboard Explain what madelog does, check your tools, and offer to set up this repo
note Write down a one-sentence decision
hook Hooks madelog installs into git. You do not run these by hand
log Print the recorded events
verify Recompute the hash chain and print the root
export Write everything madelog has recorded as JSON
hide Hide one AI session from the published page
config Read or change a configuration value
publish Render the project page and publish it
unpublish Take the published page down again
analyze Look for patterns in the log and record them
summarize Write weekly summaries
summary Work with existing summaries
model Manage the local language model
ask Ask a question about this project's history
help Print this message or the help of the given subcommand(s)
Options:
-h, --help
Print help (see a summary with '-h')
-V, --version
Print versionmadelog init
Set up madelog in this repository
Usage: madelog init [OPTIONS]
Options:
--what <WHAT> What are you building?
--for-whom <FOR_WHOM> Who is it for?
--tools <TOOLS> Which AI tools do you use, comma separated
--record-ai-sessions Record AI sessions from Git AI
--no-record-ai-sessions Do not record AI sessions
-y, --yes Do not ask anything; take the answers given and defaults for the rest
-h, --help Print helpmadelog onboard
Explain what madelog does, check your tools, and offer to set up this repo
Usage: madelog onboard [OPTIONS]
Options:
--project Per-project install: set this repository up without asking
-y, --yes Do not ask anything
-h, --help Print helpmadelog note
Write down a one-sentence decision
Usage: madelog note [OPTIONS] <TEXT>...
Arguments:
<TEXT>... The decision, in one sentence
Options:
--private Keep this note out of the published page
-h, --help Print helpmadelog hook
Hooks madelog installs into git. You do not run these by hand
Usage: madelog hook <COMMAND>
Commands:
post-commit Record the commit that was just made
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print helpmadelog hook post-commit
Record the commit that was just made
Usage: madelog hook post-commit
Options:
-h, --help Print helpmadelog log
Print the recorded events
Usage: madelog log [OPTIONS]
Options:
--json Print the events as JSON
-h, --help Print helpmadelog verify
Recompute the hash chain and print the root
Usage: madelog verify
Options:
-h, --help Print helpmadelog export
Write everything madelog has recorded as JSON
Usage: madelog export [PATH]
Arguments:
[PATH] Where to write the JSON. Prints to stdout when omitted
Options:
-h, --help Print helpmadelog hide
Hide one AI session from the published page
Usage: madelog hide <EVENT_ID>
Arguments:
<EVENT_ID> The id of the ai_session event to hide
Options:
-h, --help Print helpmadelog config
Read or change a configuration value
Usage: madelog config <COMMAND>
Commands:
get Print a configuration value
set Change a configuration value
list Print every key and its value
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print helpmadelog config get
Print a configuration value
Usage: madelog config get <KEY>
Arguments:
<KEY>
Options:
-h, --help Print helpmadelog config set
Change a configuration value
Usage: madelog config set <KEY> <VALUE>
Arguments:
<KEY>
<VALUE>
Options:
-h, --help Print helpmadelog config list
Print every key and its value
Usage: madelog config list
Options:
-h, --help Print helpmadelog publish
Render the project page and publish it
Usage: madelog publish [OPTIONS]
Options:
--local Render the page to .madelog/site/index.html and stop there
--server <SERVER> The server to publish to
-y, --yes Skip the preview
-h, --help Print helpmadelog unpublish
Take the published page down again
Usage: madelog unpublish [OPTIONS]
Options:
--server <SERVER> The server the page is on
-h, --help Print helpmadelog analyze
Look for patterns in the log and record them
Usage: madelog analyze [OPTIONS]
Options:
--json Print the patterns and moments as JSON
-h, --help Print helpmadelog summarize
Write weekly summaries
Usage: madelog summarize [OPTIONS]
Options:
--week <WEEK> Only rebuild one week, counted from the first commit
--force Write a new summary even for weeks that already have one
-h, --help Print helpmadelog summary
Work with existing summaries
Usage: madelog summary <COMMAND>
Commands:
edit Edit a summary in $EDITOR
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print helpmadelog summary edit
Edit a summary in $EDITOR
Usage: madelog summary edit <EVENT_ID>
Arguments:
<EVENT_ID>
Options:
-h, --help Print helpmadelog model
Manage the local language model
Usage: madelog model <COMMAND>
Commands:
pull Download the local model
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print helpmadelog model pull
Download the local model
Usage: madelog model pull
Options:
-h, --help Print helpmadelog ask
Ask a question about this project's history
Usage: madelog ask [QUESTION]...
Arguments:
[QUESTION]...
Options:
-h, --help Print help