Skip to content

Configuration ​

Configuration lives at ~/.config/postlyra/config.json, written with mode 600 because it holds your API token.

KeyDefaultMeaning
apiUrl"https://api.postlyra.com"The Postlyra API base URL. POSTLYRA_API_URL overrides it for one invocation.
token""The API token from postlyra login. Never commit or share this file.
brand""The brand this machine mines into, as a brand id from postlyra brands. Sent as the X-Postlyra-Brand header.
brandName""Display only.
folders[]The paths postlyra mine --all scans. A plain mine needs none. Each entry is either a git repo itself or a parent folder holding several repos one level down. ~ expands to your home directory.
exclude[]Glob-ish patterns matched against the repo label, e.g. */website. * matches within one path segment only.
vault""Optional path to a folder of Markdown notes. --all mines it, and so does a plain mine with --vault or when run inside it. Leave empty to mine commits only.
days7Default mining window. Bounds vault notes by modification time as well as commits by date.
maxIdeas8How many ideas one run asks for, and the hard cap on what gets pushed.
allBranchestrueWhen true, git log --all is used so commits on other branches are included.

Environment variables ​

VariableMeaning
POSTLYRA_API_URLOverrides the configured API URL for one invocation. Always wins.
ANTHROPIC_API_KEYFallback AI backend when the claude CLI is not on your PATH.

A full example ​

json
{
  "apiUrl": "https://api.postlyra.com",
  "token": "1|AbCdEf...",
  "brand": "0f8fad5b-d9cb-469f-a165-70867728950e",
  "brandName": "My Brand",
  "folders": ["~/Sites/myproject", "~/code"],
  "exclude": ["*/website"],
  "vault": "~/Sites/second-brain",
  "days": 7,
  "maxIdeas": 8,
  "allBranches": true
}

folders ​

Only postlyra mine --all reads folders. A plain postlyra mine works on the folder you run it in, so you can leave this empty if that is all you do.

Each entry is either a git repo itself (it has a .git directory) or a parent folder holding several repos one level down.

~/Sites/                      <- configure this
  myproject/.git              -> labelled "Sites/myproject"
  website/.git                -> labelled "Sites/website"

A folder that is a repo itself is labelled by its own name. ~ expands to your home directory.

A plain mine gives a repo the same label --all does, so its refs match either way. A repo that no configured folder covers is labelled parent/repo, which is what configuring its parent would give.

The label is the only thing about a repo that reaches Postlyra. Not the path, not the remote, not the contents.

exclude ​

Glob-ish patterns matched against the label. * matches within one path segment only.

PatternMatchesDoes not match
*/websiteSites/websitea/b/website
Sites/*Sites/myprojectOther/myproject
scratchscratchSites/scratch

vault ​

Your notes folder: an Obsidian vault, or any folder of Markdown files. Two things get mined from it:

  • Every .md note modified inside the window, first couple of lines each. Subfolders count. Hidden folders like .obsidian and .trash, and node_modules, do not.
  • Every bullet in content-inbox.md at the top of the folder, the file you dump one-liners into.

The inbox file is a list you append to forever, so the file cannot be the unit. Each bullet is mined separately.

If the folder has a 0-inbox/ subfolder, only that subfolder is mined. Versions before 0.5.0 required that layout, and existing setups keep mining exactly what they did.

When it is mined: always with --all, and with a plain mine only when you pass --vault or run it inside the notes folder. A path that is not a folder is skipped with a warning rather than an error. Leave vault empty to mine commits only.

days ​

The mining window. It bounds vault notes by modification time as well as commits by date. --days N overrides it for one run.

maxIdeas ​

How many ideas a run asks the AI for, and the hard cap on what gets pushed. --max N overrides it.

Lower is often better. --max 3 tends to produce three usable ideas, where --max 12 produces three usable ones and nine you will dismiss.

allBranches ​

When true, git log --all is used, so commits on branches other than the checked-out one are included. Set it false if you work in throwaway branches you would rather not mine.

Per-repo caps ​

Not configurable, but worth knowing: at most 60 commits per repo per run, 40 vault notes, and 60 inbox bullets. A window that exceeds those is truncated newest-first.

The token ​

token is your Postlyra API token. The file is written with mode 600. Never commit it or share it. Revoke it from your profile, under API tokens, if it leaks.

Postlyra, by MAVA Design