# Accountant24: Local-first AI agent + hledger for personal accounting

**URL:** <https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799>\
**Category:** News\
**Tags:** hledger, ai\
**Created:** [May 11, 2026, 7:00pm UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799 "2026-05-11T19:00:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![simonmic](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.plaintextaccounting.org/simonmic/32/1_2.png) [@simonmic](https://forum.plaintextaccounting.org/u/simonmic)\
**Post date:** [May 11, 2026, 7:00pm UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799/1 "2026-05-11T19:00:14Z")

</div>

> **[GitHub - machulav/accountant24: Local-first AI agent for personal accounting. Your...](https://github.com/machulav/accountant24)**
>
> Local-first AI agent for personal accounting. Your data stays as plain text files on your machine. Works with any LLM — including local ones. Log spending, import statements, ask questions, teach the agent, track changes with git, and more.

---

<div class="post-metadata">

**Author:** ![machulav](https://avatars.discourse-cdn.com/v4/letter/m/ce73a5/32.png) [@machulav](https://forum.plaintextaccounting.org/u/machulav)\
**Post date:** [May 15, 2026, 4:05pm UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799/2 "2026-05-15T16:05:20Z")

</div>

Thank you @simonmic for sharing this here!

Accountant24 started from my own frustration with the day to day side of plaintext accounting.

I like plaintext accounting a lot, and hledger is a big reason this project was possible in the first place. But I was never very good at the daily workflow around it. I'd fall behind on manual entry, and I didn't love having to remember syntax or dig through notes just to answer a simple question. For example, if I wanted to check how much I spent last month, I might end up looking for a command like `hledger bal -f /Users/volo/ledger/main.journal expenses -b 2026-04-01 -e 2026-05-01 --depth 2 --invert`.

That was basically the starting point. I wanted something that still uses hledger underneath and still keeps the data as plain text on my machine, but makes the interaction much easier. Now I can ask something like "show me how much I spent last month", describe a transaction in plain English, or import a statement or receipt and let the agent turn that into ledger updates.

What made this much more usable for me was that changes are automatically versioned with git, it remembers accounts, payees, and other useful context in a local markdown file, so over time it gets smarter and requires less of my attention, and it can also run with local LLMs so the data stays fully local.

I don't really see it as a replacement for hledger. For me it's more like an interface around hledger that makes plaintext accounting easier to live with day to day and open PTA to more people.

I'd be very interested in feedback from people here, especially what seems useful and what feels like a bad idea.

---

<div class="post-metadata">

**Author:** ![simonmic](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.plaintextaccounting.org/simonmic/32/1_2.png) [@simonmic](https://forum.plaintextaccounting.org/u/simonmic)\
**Post date:** [May 15, 2026, 5:42pm UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799/3 "2026-05-15T17:42:26Z")

</div>

I would write that as

```
is -p apr -2

```

(I have `alias is='hledger is'`).. but yes it makes sense. 😁

Welcome @machulav - thanks for the background, very interesting!

---

<div class="post-metadata">

**Author:** ![SeveredinTwain](https://avatars.discourse-cdn.com/v4/letter/s/cc9497/32.png) [@SeveredinTwain](https://forum.plaintextaccounting.org/u/SeveredinTwain)\
**Post date:** [June 5, 2026, 11:16am UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799/5 "2026-06-05T11:16:51Z")

</div>

@machulav This looks pretty great! Just a quick question though. So I see how Accountant24 sets up the pre-configured folder for itself upon install with a local git repository and a folder dedicated to hledger setup inside. My question is if I go into that ledger folder and go mucking about changing the structure of the files, like nesting folders inside of that ledger folder, would it make it unusable for the Accountant24 agent to parse? I'd like to adopt the same structure I already use within the agent. It looks like this:

hledger-finances/  
├── .gitignore  
├── .hledger.journal # Main entry point that includes all others  
├── accounts/  
│ ├── assets.journal  
│ ├── liabilities.journal  
│ ├── equity.journal  
│ ├── income.journal  
│ └── expenses.journal  
├── commodities/  
│ └── commodities.journal # Currency and commodity definitions  
├── transactions/  
│ ├── 2026/  
│ │ ├── 2026-01.journal  
│ │ ├── 2026-02.journal  
│ │ └── 2026-03.journal  
│ └── 2025/  
│ ├── 2025-12.journal  
│ ├── 2025-11.journal  
│ └── 2025-10.journal  
├── import-rules/  
│ ├── bank-csv.rules  
│ └── credit-card-csv.rules  
├── reports/  
│ └── .gitkeep # Generated reports (add to .gitignore)  
└── README.md

I'm pretty sure that it shouldn't be an issue since it is basically just parsing text files and interacting with hledger, but I figured I'd ask just in case you had some tribal knowledge regarding the pi.dev backend that I didn't know about. Thanks again and keep up the great work!

---

<div class="post-metadata">

**Author:** ![machulav](https://avatars.discourse-cdn.com/v4/letter/m/ce73a5/32.png) [@machulav](https://forum.plaintextaccounting.org/u/machulav)\
**Post date:** [July 9, 2026, 9:31am UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799/6 "2026-07-09T09:31:24Z")

</div>

@SeveredinTwain thank you for your question, and I'm sorry for the late response - I've just noticed it.

Short answer: that exact structure won't work, unfortunately. Reading is flexible, writing isn't.

On the reading side, the agent reads the ledger through a single entry point, `ledger/main.journal`, and hledger resolves the includes from there. Whatever that file pulls in works: nested folders, split account files, monthly transaction files. But the `ledger/main.journal` file is hardcoded in the agent and can't be changed at the moment.

The write paths are also hardcoded. New transactions always land in `ledger/YYYY/MM.journal`, and new commodities get declared in `ledger/commodities.journal`. It works like that because the agent uses custom code to add transactions to the ledger and relies on the hardcoded paths, not on the entry point file.

I've written down a feature request to make the folder structure more flexible in the future: [Make a ledger folder structure more flexible · Issue #18 · machulav/accountant24 · GitHub](https://github.com/machulav/accountant24/issues/18)

I hope this helps.

---

<div class="post-metadata">

**Author:** ![machulav](https://avatars.discourse-cdn.com/v4/letter/m/ce73a5/32.png) [@machulav](https://forum.plaintextaccounting.org/u/machulav)\
**Post date:** [July 9, 2026, 9:57am UTC](https://forum.plaintextaccounting.org/t/accountant24-local-first-ai-agent-hledger-for-personal-accounting/799/7 "2026-07-09T09:57:17Z")

</div>

By the way, [Accountant24](https://github.com/machulav/accountant24) is now a desktop app instead of a TUI. This should improve the user experience and make it accessible to more people. It also makes it easier to add new features and keep improving the app. Please let me know what you think!

 ![image](https://canada1.discourse-cdn.com/flex003/uploads/plaintextaccounting/original/1X/e27469bee8f8ae2f69a431288f513ba9a7f27dd1.jpeg)
