{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "ledger--ledger",
    "name": "Ledger CLI",
    "tagline": "Plain-text double-entry accounting from the command line; the CLI is the whole interface.",
    "shortTagline": "Plain-text accounting",
    "description": "Ledger reads a text journal of transactions and produces balance, register, budget and forecast reports with no database. It has been the reference plain-text accounting tool since 2003 and is scriptable by construction: an agent appends to the journal and runs reports. BSD-3-Clause, actively maintained.",
    "capabilities": [
      "operable"
    ],
    "vertical": "invoicing-finance",
    "alternativeTo": [
      "Quicken"
    ],
    "shape": "product",
    "formFactor": "cli",
    "executionModel": "deterministic",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "C++",
        "Python"
      ],
      "frameworks": [
        "Boost"
      ],
      "packageManager": "cmake",
      "database": [],
      "hostingTarget": [
        "local machine",
        "Docker"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/ledger/ledger",
        "owner": "ledger",
        "name": "ledger",
        "license": "BSD-3-Clause",
        "stars": 6026,
        "lastCommit": "2026-08-28"
      }
    ],
    "interface": {
      "kind": "cli",
      "url": "https://www.ledger-cli.org/docs.html",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Balance reports by account",
        "reachable": true,
        "evidence": "ledger balance (manual ch. 'Reports')"
      },
      {
        "job": "Register of transactions with filters",
        "reachable": true,
        "evidence": "ledger register with account, payee and date expressions"
      },
      {
        "job": "Budgeting against periodic transactions",
        "reachable": true,
        "evidence": "--budget and --unbudgeted flags"
      },
      {
        "job": "Forecasting",
        "reachable": true,
        "evidence": "--forecast option with periodic entries"
      },
      {
        "job": "Multi-commodity and price valuation",
        "reachable": true,
        "evidence": "price database, --market and --exchange"
      },
      {
        "job": "Periodic and custom-formatted reports",
        "reachable": true,
        "evidence": "--period, --format, csv and xml commands"
      },
      {
        "job": "Enter new transactions",
        "reachable": true,
        "evidence": "ledger xact drafts a transaction from a payee; or append to the journal file"
      },
      {
        "job": "Import bank data",
        "reachable": null,
        "evidence": "convert command exists; --import needs a Python-enabled build"
      },
      {
        "job": "Close books and equity",
        "reachable": true,
        "evidence": "equity command for opening balances"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/ledger/ledger"
          },
          {
            "kind": "installable",
            "url": "https://www.ledger-cli.org/download.html",
            "command": "brew install ledger"
          },
          {
            "kind": "container",
            "url": "https://hub.docker.com/r/dcycle/ledger/"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or published skill found in the repo."
    },
    "customization": null,
    "useWhen": [
      "I keep my books in a text file in git and want reports without a GUI",
      "I want my agent to append transactions and run balance checks in a script"
    ],
    "accounts": [],
    "active": true,
    "lastActivity": "2026-08-28",
    "gotchas": [
      "No invoicing, no bank sync; you supply the journal",
      "Python features (--import) need a Python-enabled build, which is off by default",
      "Community Windows support is weaker than macOS and Linux"
    ],
    "fit": {
      "adaptable": 1,
      "operable": 3
    },
    "evidence": {
      "formFactor": "UNIX command-line tool (README)",
      "executionModel": "no model at runtime",
      "operability": "the CLI is the product; docs at ledger-cli.org by the Builder",
      "effort": "no Customization surface beyond the journal and ~/.ledgerrc defaults; adapting means C++ fork",
      "editions": "BSD-3-Clause per LICENSE.md; free",
      "active": "GitHub pushedAt 2026-08-28; CLAUDE.md in repo"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.95,
      "operability": 0.95,
      "effort": 0.7,
      "reach": 0.85,
      "editions": 0.95
    },
    "openQuestions": [
      "Whether ~/.ledgerrc should count as a config file that makes this Adaptable at config-only; this analysis kept it Operable only"
    ],
    "sources": [
      {
        "url": "https://github.com/ledger/ledger",
        "foundBy": "sourcing:invoicing-finance:community"
      },
      {
        "url": "https://www.ledger-cli.org/docs.html",
        "foundBy": "sourcing:invoicing-finance:community"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Operable only: official CLI with complete Reach over plain-text journals. Nothing to adapt short of a C++ fork.",
      "disputed": []
    },
    "url": "apps/ledger--ledger.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/ledger--ledger.json"
  }
}
