legdger暗号化されたローカルファースト家計簿
家計簿界の Obsidian。ローカルファーストで、端末内 AI の財務コパイロット、各種 AI を接続できるプラグイン体系を備えます。すべての記帳データは端末内で暗号化され、AI 分析もデバイスから出ません。同期のみアカウントと課金が必要で、ローカル機能は永久に無料です。
01$ ledger-cli doctor02{ "ok": true, "store": "ledger-mac.store", "readonly": true }0304$ ledger-cli stats --month 2026-0905{ "monthExpense": 12483.20, "monthIncome": 32000.00,06 "netWorth": 486210.55, "wallets": 7 }データはあなたのもの。AI はあなたの端末に住む財務コパイロットにすぎません。
設計のポイント
このツールがなぜこのように作られているのか、そしてそれが何をもたらしたのか。
iOS は手早く記帳する端末。macOS はプラグイン体系・AI 接続・一括整理を担う完全なデータ端末です。
袋の統一、通貨ごとの合計ゼロ、記帳取引の三動詞検証ゲート。データモデルは一度決めたら作り直しません。
UUIDv7 主キー + HLC バージョン + エンティティ状態のミラー同期。サーバーは最新の暗号文のみを保持し、履歴を積みません。
ledger-cli がローカルストアを読み取り専用で開きます。トークンは Mac アプリが発行・失効させ、監査ログが付きます。
能力一覧
- ローカルファースト + 端末内 AI:集計・Q&A・雑談まですべてデバイス内で完結
- 複式簿記カーネル:1 件の記帳 = 合計ゼロになる Leg の集合。残高は常に導出され、保存されません
- 11 種類のウォレットバッグ:資産、負債、証券、暗号資産、照合待ち、分割中間袋
- 端末内レシート OCR:Vision 解析 → ルールエンジン → 確認カードで登録
- ネイティブ App Intents とショートカット:「1 件記帳」を一言で完了
- ledger-cli:読み取り専用 CLI + トークン認可により、外部 AI エージェントが安全に分析
設計指標
どれも実装における具体的な決定に対応しています。
記帳データは端末内で暗号化され、クラウドには最新の暗号文のみを保持
資産、負債、証券、暗号資産、照合待ち、分割中間袋など
LedgerCore は独立した Swift Package で、カーネルには完全なテストカバレッジがある
残高は常に Leg から導出され、ズレるキャッシュ値は存在しない
エンティティ状態のミラー同期。サーバーは履歴を蓄積しない
集計・Q&A・雑談のすべてを端末内で完結
プラットフォーム対応
カーネルとシェルを分離したことで、対応状況はプラットフォームごとに個別に進められます。
完全なデータ端末:プラグイン体系、AI 接続、一括整理
すっと書ける記帳端末。App Intents、ショートカット、ウィジェット対応
読み取り専用コマンド、JSON 出力。エージェントのために設計
カーネルはクロスプラットフォーム設計。シェルは未着手
同一カーネル。端末内 AI はプラットフォーム機能への適合が必要
一般的なやり方との違い
違いは通常機能表ではなく、「境界をどこに引くか」にあります。
コマンド概要
完全なマニュアルは CLI リファレンスページにあります。すべてのコマンドは既定で構造化された結果を出力します。
ledger-cli doctor自己診断:ストアの場所、読み取り専用状態、カーネルバージョンと暗号化状態
--jsonledger-cli stats月次の収支・純資産・ウォレット分布を集計
--month YYYY-MM--wallet <id>ledger-cli walletsウォレットとそれぞれの袋型(資産 / 負債 / 証券 / 暗号資産など)を一覧
ledger-cli queryタグ・期間・金額範囲で記帳を検索
--tag <tag>--from--to--min実際の出力
01$ ledger-cli doctor02{ "ok": true, "store": "ledger-mac.store", "readonly": true }0304$ ledger-cli stats --month 2026-0905{ "monthExpense": 12483.20, "monthIncome": 32000.00,06 "netWorth": 486210.55, "wallets": 7 }モジュール
3 グループ・10 モジュール。すべてリポジトリの実際のディレクトリ構造に基づきます。
SwiftUI · SwiftData · Swift 6 · FoundationModels · Vision · GRDB (V1) · CLILedgerCore は独立した Swift Package。アプリと CLI が同じ実装を共有します。
LedgerCore複式記帳カーネル:Leg の合計ゼロ、残高の導出、記帳取引の三動詞検証ゲート
LedgerCore/Sources/LedgerCoreLedgerCoreStorageストレージ層:SwiftData モデルとローカルストアの読み書き。CLI は読み取り専用で開く
LedgerCore/Sources/LedgerCoreStorageLedgerCoreCrypto暗号化層:端末内で暗号化保存し、クラウドには暗号文のみ
LedgerCore/Sources/LedgerCoreCryptoLedgerCoreSync同期層:UUIDv7 主キー + HLC バージョン + エンティティ状態のミラー同期
LedgerCore/Sources/LedgerCoreSynciOS ですっと記録し、macOS が完全なデータ端末。
ledger-iosiOS 版:記帳の入口、App Intents とショートカット、ウィジェット
ledger-ios/ledger-macmacOS 版:完全なデータ端末、プラグイン体系、一括整理
ledger-mac/Intelligence端末内インテリジェンス:FoundationModels 推論 + ルールエンジン降格 + Vision OCR レシート認識
ledger/IntelligenceImport / LANデータ取り込み(標準フォーマット)と LAN 同期チャネル
ledger/{Import,LAN}外部エージェントに帳簿を安全に読ませる——読み取り専用で。
ledger-cli読み取り専用 CLI:doctor / stats などのコマンド。AI エージェント向けに JSON 出力
ledger-cli/Sources/ledger-cliトークン認可トークンは Mac アプリが発行・失効させ、監査ログ付き
ledger-mac/使い方
4 の典型的なシーン。それぞれ、そのまま実行できるステップに分解しています。
App Intents とショートカットで、アプリを開かずに記帳できます。
- 1Siri やショートカットに「記帳、昼食 38」と話しかける
- 2端末内のルールエンジンが金額・カテゴリ・時刻を解析
- 3ウォレットと袋型が決まり、合計ゼロの Leg 群が生成される
- 4確認カードに解析結果を表示し、確定で保存
端末内 OCR がレシートを識別。全工程がデバイス内で完結します。
- 1レシートを撮影、またはアルバムから選択
- 2Vision フレームワークが端末内で文字認識
- 3ルールエンジンが店舗名・金額・日付を抽出
- 4確認カードを生成し、目視確認のうえ保存
「今月の外食費はいくら?」と尋ねると、答えはデバイス内で計算されます。
- 1FoundationModels の端末内推論が自然言語の質問を理解
- 2カーネルが質問をローカル帳簿への読み取り専用クエリに変換
- 3集計結果はデバイス内で生成、ネットワーク要求はなし
- 4モデルが不足する場合はルールエンジンへ降格し、可用性を担保
読み取り専用認可 + 監査ログ。AI は見ることはできても変更できません。
- 1Mac アプリ内でアクセストークンを発行
- 2エージェントは ledger-cli でローカルストアを読み取り専用で開く
- 3JSON の構造化出力をエージェントの分析に渡す
- 4呼び出しごとに監査ログへ記録され、トークンはいつでも失効可能
データ境界とセキュリティ
この種のツールの価値の大部分は「何をしないか」にあります。以下の各項目には実装箇所を明記しています。
記帳データは端末内で暗号化され、クラウドには最新の暗号文のみ。サーバーは平文を読めません。
LedgerCoreCryptoledger-cli はローカルストアを読み取り専用で開き、書き込み操作はストレージ層で拒否されます。
ledger-cli doctor → readonly: trueアクセストークンは Mac アプリが発行・失効させ、監査ログ付き。いつでも切断できます。
ledger-cli token revoke集計と Q&A はデバイス内で完結し、AI 分析がデータを外へ送ることはありません。
FoundationModels · Intelligence記帳取引の三動詞検証ゲートを備え、一度決めたデータモデルは作り直しません。
LedgerCore 検証ゲートエンティティ状態のミラー上書き同期。サーバーに履歴を残さず、漏洩面を減らします。
LedgerCoreSyncリリースリズム
リリース済みは何を納品したか、開発中は何を進めているかを明記します。
v0.6リリース済みカーネル- 複式簿記カーネルと Leg の合計ゼロ
- 11 種類のウォレット袋型
- SwiftData ローカル保存と暗号化レイヤー
- iOS 記帳アプリと App Intents
v0.9リリース済みインテリジェンスと接続- 端末内 AI による集計と Q&A
- Vision OCR によるレシート認識
- ledger-cli の読み取り専用接続とトークン
- macOS の完全データ端末
v1.0開発中同期とプラグイン- UUIDv7 + HLC のエンティティミラー同期を提供
- プラグイン体系でサードパーティ AI の接続を解放
- 一括整理と照合ワークフロー
- 多通貨のレートと換算
v1.2計画中拡張- Windows / Android 版
- 共有帳簿と家族での協働
- ポートフォリオ分析ビュー
- 標準フォーマット入出力のエコシステム
よくある質問
いいえ。記帳データは端末内で暗号化して保存され、同期を有効にしたときのみ最新の暗号文がアップロードされます。サーバーは平文を保持せず、履歴も蓄積しません。AI の集計と Q&A はすべて端末内で完結します。
モジュール
3 グループ・10 のモジュール。パスはリポジトリのディレクトリに直接対応し、エンジニアが素早く位置を特定できます。
LedgerCore は独立した Swift Package。アプリと CLI が同じ実装を共有します。
LedgerCore複式記帳カーネル:Leg の合計ゼロ、残高の導出、記帳取引の三動詞検証ゲート
LedgerCore/Sources/LedgerCoreLedgerCoreStorageストレージ層:SwiftData モデルとローカルストアの読み書き。CLI は読み取り専用で開く
LedgerCore/Sources/LedgerCoreStorageLedgerCoreCrypto暗号化層:端末内で暗号化保存し、クラウドには暗号文のみ
LedgerCore/Sources/LedgerCoreCryptoLedgerCoreSync同期層:UUIDv7 主キー + HLC バージョン + エンティティ状態のミラー同期
LedgerCore/Sources/LedgerCoreSynciOS ですっと記録し、macOS が完全なデータ端末。
ledger-iosiOS 版:記帳の入口、App Intents とショートカット、ウィジェット
ledger-ios/ledger-macmacOS 版:完全なデータ端末、プラグイン体系、一括整理
ledger-mac/Intelligence端末内インテリジェンス:FoundationModels 推論 + ルールエンジン降格 + Vision OCR レシート認識
ledger/IntelligenceImport / LANデータ取り込み(標準フォーマット)と LAN 同期チャネル
ledger/{Import,LAN}外部エージェントに帳簿を安全に読ませる——読み取り専用で。
ledger-cli読み取り専用 CLI:doctor / stats などのコマンド。AI エージェント向けに JSON 出力
ledger-cli/Sources/ledger-cliトークン認可トークンは Mac アプリが発行・失効させ、監査ログ付き
ledger-mac/技術スタック
レイヤー設計
カーネルからシェルまで、各層の責務と実装技術。この種のツールの中核設計は「カーネルとシェルの分離」です。
Ledger / Wallet / Transaction / Term の4エンティティ + Leg 値オブジェクト
複式の Leg は合計ゼロ。残高 = 期首 + Σ 袋の Leg をその場で導出
FoundationModels の端末内推論 + ルールエンジンへの降格 + Vision OCR
UUIDv7 の識別 + HLC バージョン + エンティティミラー上書き同期(V1)
ledger-cli の読み取り専用 CLI、トークン認可、AI エージェント向け JSON 出力
SwiftUI · SwiftData · Swift 6 · iOS 17.6+ · macOS
マルチプラットフォーム対応
カーネルは同じで、プラットフォームが違えばシェルが変わるだけです。対応状況はプラットフォームごとに個別に進められます。
完全なデータ端末:プラグイン体系、AI 接続、一括整理
すっと書ける記帳端末。App Intents、ショートカット、ウィジェット対応
読み取り専用コマンド、JSON 出力。エージェントのために設計
カーネルはクロスプラットフォーム設計。シェルは未着手
同一カーネル。端末内 AI はプラットフォーム機能への適合が必要
技術スタック
コマンドマニュアル
6 本のコマンド。設計前提は、構造化された出力と意味を持つ終了コードです。スクリプトも AI Agent も確実に消費できます。
ledger-cli doctor自己診断:ストアの場所、読み取り専用状態、カーネルバージョンと暗号化状態
--jsonledger-cli stats月次の収支・純資産・ウォレット分布を集計
--month YYYY-MM--wallet <id>ledger-cli walletsウォレットとそれぞれの袋型(資産 / 負債 / 証券 / 暗号資産など)を一覧
ledger-cli queryタグ・期間・金額範囲で記帳を検索
--tag <tag>--from--to--minledger-cli export外部 AI エージェントが消費できる構造化エクスポート
--format json|csv--monthledger-cli tokenアクセストークンの表示と失効(失効は Mac アプリ内で確認)
listrevoke <id>出力の規約
CLI はプログラムのためのインターフェースであり、人間が読めるのは付随的なことです。
既定で JSON を出力し、フィールド名は安定しています。人間が読みやすい整形は呼び出し側が決め、CLI は推測しません。
成功・失敗・使い方の誤りで異なる終了コードを返します。スクリプトと Agent はテキストを解析せず、コードで分岐します。
ローカルのトークンファイルを自動検出し、コマンドラインでの平文の資格情報を避けます(シェル履歴やプロセス一覧に残るため)。
実際の呼び出し
01$ ledger-cli doctor02{ "ok": true, "store": "ledger-mac.store", "readonly": true }0304$ ledger-cli stats --month 2026-0905{ "monthExpense": 12483.20, "monthIncome": 32000.00,06 "netWorth": 486210.55, "wallets": 7 }アイデンティティ・エージェント・プライベートドメインの複雑さを、統治可能なひとつのカーネルへ
既存の IAM の置き換え、エージェント基盤の構築、あるいはプライベートドメイン運用の本格化——まずは 30 分のアーキテクチャ相談から始めましょう。私たちが得意とする種類の問題かを先に判断し、適さない場合は率直にお伝えします。