AtlatestRepositorytally
1
;;; tally - Personal finance management CLI and MCP server2
;;;3
;;; Pulls transactions from financial APIs (Wise), categorizes them,4
;;; writes to hledger journal files, and generates financial summaries.5
;;; Usable as a CLI and as an MCP server for AI-assisted bookkeeping.7
(package8
name: "tally"9
version: "0.2.7"10
description: "Personal finance management CLI and MCP server"11
url: "https://codeberg.org/sigil/tally"12
license: "BSD-3-Clause"13
sigil: "0.20"14
authors: (list "David Wilson <david@daviwil.com>")16
entry: '(tally main)17
bundle-name: "tally"19
configs: (list20
(config21
name: 'dev22
output-dir: "build/dev"23
debug?: #t24
optimize: 025
bundle?: #t)26
(config27
name: 'release28
output-dir: "build/release"29
backend: 'native30
debug?: #f31
optimize: 232
bundle?: #t))34
provides: (list35
mcp-server: #{ name: "tally"36
args: #["serve"]37
secret-env: #{ WISE_API_TOKEN: #t } })39
dependencies: (list40
;; Explicit sigil-lib pin. Two independent reasons, both measured:41
;; 1. Without it, sigil-lib is derived transitively and does not track42
;; the `sigil:` field, so a relock can silently leave the C runtime43
;; behind while `sigil deps install` exits 0.44
;; 2. sigil-lib's resolution does NOT respect its declared range: with45
;; no explicit pin, a fresh resolve records `ref: "^0.17"` alongside46
;; `version: "0.18.2"` in the same lock entry, on any toolchain,47
;; while sigil-stdlib in that same resolve correctly stays at 0.17.20.48
;; Verify in sigil.lock (the `version:`/`sha:` fields, not `ref:`).49
(from-git url: "codeberg:sigil/sigil"50
package: "sigil-lib" version: ">=0.21")51
(from-git url: "codeberg:sigil/sigil" package: "sigil-run" version: ">=0.21")52
(from-git url: "codeberg:sigil/sigil-json" version: "^0.16")53
(from-git url: "codeberg:sigil/sigil-log" version: "^0.16")54
;; sigil-mcp ^0.18.1 (first release correct on MCP protocol 2026-07-28 over55
;; stdio), never ^0.16. The 0.16 line contains BOTH a release56
;; requiring the 0.18 runtime (v0.16.5) and one requiring 0.17 (v0.16.6, a57
;; deliberate compatibility revert), so ^0.16 no longer determines which58
;; runtime you need. The 0.17 line is the unambiguous 0.18-runtime line.59
(from-git url: "codeberg:sigil/sigil-mcp" version: "^0.18.1")60
;; Keep MCP's HTTP transport on the post-cutover line so a fresh relock61
;; cannot resurrect the archived standalone sigil-socket provider.62
(from-git url: "codeberg:sigil/sigil-http" version: "^0.18")63
(from-git url: "codeberg:sigil/sigil" package: "sigil-args" version: ">=0.21")64
(from-git url: "codeberg:sigil/sigil-wise" version: "^0.10")65
(from-git url: "codeberg:sigil/sigil-ledger" version: "^0.10"))67
dev-dependencies: (list68
(from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: ">=0.21")69
(from-git url: "codeberg:sigil/sigil"70
package: "sigil-test-runner" version: ">=0.21"))72
tasks: (list73
(task74
name: 'build75
description: "Compile tally modules"76
steps: (list77
(compile-sigil-modules sources: "src/**/*.sgl"78
output-dir: (config-output-subdir "lib"))))))