Skip to main content

logmind

PyPI Python versions CI skills.sh License: MIT

AI decision logging for development projects — branch-aware by default.

Why logmind

Codebases lose the why behind their code faster than the what. logmind captures architectural and implementation decisions as you make them, attaches them to the relevant git branch, and surfaces them to the next human or AI that works in the repo. One CLI command per decision; the package handles the docs, the branch routing, and the merge-time aggregation.

Key concept: Install once, init anywhere, log everything. Feature branches get their own decision file; on PR merge a GitHub Action appends a one-line summary to docs/decisions.md linking the PR + the branch detail. AGENTS.md is the canonical agent-instruction file; per-tool files (CLAUDE.md, .cursorrules, ...) are 2-line stubs pointing to it.

Installation

# Using pipx (recommended)
pipx install logmind

# Using Homebrew (macOS/Linux)
brew tap thrillmade/logmind
brew install logmind

# Using pip
pip install logmind

Required repo settings

logmind init ships a GitHub Action (regen-timeline.yml) that VERIFIES docs/timeline.md is up to date on every PR — fail-fast if stale, no auto-commit. For the derived-file architecture to stay conflict-free between concurrent PRs, your repo needs:

  • Strict required status checks on main — Settings → Branches → Branch protection rule (or Ruleset) → "Require branches to be up to date before merging". This forces a PR to be rebased on latest main before merge, which is what makes docs/timeline.md (and any other derived file) conflict-free across concurrent PRs.

Without that toggle, two PRs in flight can both regenerate against different base commits and merge-conflict on the derived file.

One-command setup via reporulez

If you'd rather not click through the GitHub UI, the clud-bug-logmind variant of reporulez ships the canonical ruleset for repos using both logmind and clud-bug — strict status checks pinned to logmind's check names, required thread resolution, squash-only, the works:

curl -fsSL https://raw.githubusercontent.com/thrillmade/reporulez/main/bin/apply.sh \
  | bash -s -- owner/your-repo clud-bug-logmind

Quick Start

# If installed via pipx/brew, it's already available globally

# Initialize in your project
cd your-project
logmind init

# OR — install the full SkDD toolchain (logmind + clud-bug) in one go:
logmind init --with-skdd      # subprocesses to `npx clud-bug init` (requires Node 20+)

# Log decisions - Python API
from logmind import log
log("Chose FastAPI over Flask",
    reasoning="Need async/await for WebSocket handling")

# Or use CLI
logmind log "Use PostgreSQL for database" \
  -r "Need ACID compliance" \
  -a "MongoDB" -a "SQLite"

# View and search decisions
logmind show
logmind search "postgres"

# Log with a built-in template (pre-fills reasoning, alternatives, implications)
logmind log --template database "Use PostgreSQL"
logmind templates   # list all available templates

# Analytics and stats
logmind stats
logmind stats --months 6

# Aggregate decisions across multiple projects
logmind aggregate ~/projects/api ~/projects/frontend
logmind aggregate --summary ~/work/*/

# Enforce decision logging with a pre-commit hook
logmind install-hook          # installs .git/hooks/pre-commit
logmind check-decisions       # run manually or in CI

# Manage AI agents
logmind agents list
logmind agents add windsurf

# View and modify configuration
logmind config list
logmind config get git.auto_push
logmind config set git.auto_push false

# Upgrade logmind
logmind update

# Auto-log with decorators
from logmind import log_decision, log_choice

@log_decision(
    decision="Authenticate user with {method}",
    reasoning="Security checkpoint"
)
def authenticate(method="oauth"):
    # Your auth code
    return True

@log_choice(
    choices={
        "redis": "Use Redis for caching",
        "memory": "Use in-memory caching",
    }
)
def select_cache():
    return "redis" if is_production() else "memory"

Contributing / Development Setup

Working on logmind itself? Set it up like any CLI tool:

# Clone the repo
git clone https://github.com/thrillmade/logmind.git
cd logmind

# Install globally in editable mode (like npm, git, docker)
pipx install -e .

# Now just use it!
logmind log "Add new feature" -r "Reasoning here"
logmind show
logmind search "keyword"

# Run tests
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
pytest

Why pipx? logmind is a CLI tool, not a library. It should be globally available like git or npm.

Framework Integrations

# LangChain — auto-log agent decisions (pip install logmind[langchain])
from logmind.integrations import LangChainLogger

chain = LLMChain(llm=llm, callbacks=[LangChainLogger()])

# Custom framework — subclass BaseIntegration
from logmind.integrations.base import BaseIntegration

class MyLogger(BaseIntegration):
    def on_decision(self, output):
        self.log(f"Chose: {output}", reasoning="My framework decided")

See docs/custom-integrations.md for patterns, examples, and publishing guide.

Documentation

How It Works

  1. Install logmind as a package
  2. Init creates docs/ folder and inserts instructions into CLAUDE.md (preserving existing content)
  3. Log a decision - appends, archives old ones (keeps 20 recent), regenerates tree, commits, and pushes
  4. Context AI agents read the 20 most recent decisions and current file structure

Why logmind?

  • Simple: Two markdown files (recent + archive), no database
  • Focused: Only 20 most recent decisions for relevant AI context
  • Git-native: Every decision is a commit, git history is your audit trail
  • AI-friendly: Recent decisions + file structure = complete context
  • Automatic: Commits and pushes on every log

See docs/plan.md for complete architecture and roadmap.


Part of the thrillmade SkDD toolchain

Skills-Driven Development (Zak Elfassi's methodology) gives you the loop; the thrillmade toolchain ships the parts:

  • logmind — the why behind every change (decision logging as commit primitive); skill-creation + testing + auditing
  • clud-bug — skill-driven PR review at gate time; every finding cites the skill that motivated it
  • agent-skills — public catalog of reusable skills
  • skills.sh — skill discovery + install

End-to-end agentic auto dev: write skills first → log the why → run them against PRs → iterate based on usage. The tools work independently; better together.

Metadata

Release files for logmind 0.6.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for logmind 0.6.16
File Size Uploaded
logmind-0.6.16.tar.gz 274.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for logmind 0.6.16
File Interpreter ABI Platform
logmind-0.6.16-py3-none-any.whl Python 3 none any Details

Total release size: 450.7 kB

Release files / logmind-0.6.16.tar.gz

Download URL logmind-0.6.16.tar.gz
Size 274.9 kB
Tags Source
SHA-256 checksum
How to use checksums
10d83a543494ff2fe47fd6d32a29677bcdea38cde94141d81c6a75f7534ae41d
BLAKE2b-256 checksum
How to use checksums
a3d71b7109adb60aad7b4ed1e94c162666220043c9dd768b6a437e4df1b41a04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 2, 2026.

Transparency log

Release files / logmind-0.6.16-py3-none-any.whl

Download URL logmind-0.6.16-py3-none-any.whl
Size 175.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
737a1c54b2bf02bb9069d381744d80ae09450b45bfa94b8713f27197f0fc5c3d
BLAKE2b-256 checksum
How to use checksums
2abdbe1e15655cd8bcfe96014c43cc1297a16a5bc9605e402dea410d8f472c79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.16 This release

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page