Skip to main content
Glama
clausd

aedificium-template

by clausd

aedificium — 個人学習ノート+レキシコン、Claude ネイティブ

http://localhost:8788 上のカードグリッド UI で、ノート、定義(レキシコン)、PDF を扱います。チャットペインは MCP 経由で Claude Code に接続されます。数式は最高級にレンダリングされます(KaTeX)。ディスク上のすべてはプレーンな Markdown で、git に自動コミットされ、(オプションで)GitHub に自動プッシュされます。

これは オープンソーステンプレート です。フォークし、そのフォークを兄弟の scriptorium/ コードラボの隣にクローンして、書き始めてください。

得られるもの

  • カードグリッド+リーダー — 左にノート、右に Claude とのチャット。

  • 最高級の数式 — インラインで $e^{i\pi}+1=0$、ディスプレイで $$…$$、KaTeX をサーバーサイドで使用。カードグリッド および リーダーで描画されます。

  • レキシコン — 1 ファイルに 1 定義(lexicon/eigenvalue.md)。見出し語+同義語+分野ラベル付きの辞書エントリとして描画されます。

  • PDF ライブラリ — PDF を pdfs/ に置くと、サイドカーのディスカッションカードが自動的に表示されます。埋め込みビューアはありません。ブラウザのネイティブビューアの方が優れているからです。#page=N でページへのディープリンクが可能です。

  • チャットは Claude Code — ブラウザで入力すると Claude が回答し、現在選択中のカードがコンテキストとして一緒に送られます(refs=…)。

  • Wiki リンク — 任意のノート内の [[slug]] はリーダー内でクリックして開くリンクになり、/note/<slug> のディープリンクは History API 経由で機能します。

  • Git ネイティブ — 書き込みは自動コミット(デバウンス約 3 秒)され、origin が設定されていれば自動プッシュされます。PDF 用に LFS が事前設定されているため、GitHub は大きなバイナリをきれいに処理できます。

前提条件

macOS(arm64) 上で開発・テストされています。Linux は同等のパッケージをインストールすれば動作するはずです。

  • bun — サーバーが使用する JavaScript ランタイム。brew install oven-sh/bun/bun

  • git-lfs — PDF 用。brew install git-lfs

  • Claude Code — チャットペインが通信する CLI。これによりノートブックが インタラクティブ になります。

セットアップ

# Fork on GitHub first, then:
git clone git@github.com:clausd/aedificium.git
cd aedificium
bun install
git lfs install

起動

重要なフラグが 1 つあり、見落としがちです。 Claude Code は、ブラウザ → Claude 方向のチャネルを機能させるために --dangerously-load-development-channels server:aedificium を必要とします。これがないと、reply / commit_chat ツールは依然として機能しますが(Claude → ブラウザ)、チャットペインに入力したものは 何も Claude に届きません。沈黙はバグのように見えますが、バグではありません。

claude --dangerously-load-development-channels server:aedificium

Claude Code は .mcp.json に従って bun server.ts を自動的に起動します。その後、http://localhost:8788 を開いてください。

エイリアスを検討してください:

alias claude-aed='claude --dangerously-load-development-channels server:aedificium'

「bun を nohup するな」ルール

自分で bun を nohup / disown で起動しないでください。そうすると、bun は Claude Code の MCP stdio パイプから切り離された孤児プロセスになります。ブラウザは引き続き機能しますが、Claude は replycommit_chat を失い、将来の Claude Code セッションもポート 8788 にバインドできなくなります(孤児プロセスが掴んだままのため)。

server.ts の変更を反映する必要がある場合:

kill $(lsof -tiTCP:8788 -sTCP:LISTEN)   # or just kill the pid you see
# then exit + re-enter Claude Code; the harness respawns a fresh bun child.

レイアウト

notes/                  YYYY-MM-DD-HHMM-slug.md — free-form notes
lexicon/                <slug>.md — one term per file, dictionary style
pdfs/                   PDFs + auto-generated sidecar .md discussion cards
assets/                 pasted / dropped images referenced from cards
files/                  misc non-PDF uploads
archive/                archived cards (preserves original subdir)
data/chat.jsonl         durable chat transcript (tracked + searchable)

server.ts               the Bun app (single file, ~2500 lines)
CLAUDE.md               the design doc + Claude Code project instructions
.mcp.json               MCP config (Claude Code reads this to spawn bun)
.gitattributes          LFS routing for *.pdf

1 ページにまとめた規約

  • カードの種類は宣言ではなく推定されます。notes/ 内のファイルはノート、lexicon/ 内のファイルはレキシコンエントリ、PDF にはサイドカーカードが付きます。

  • 数式: インラインは $x$(ドル記号は内容に密着)、ディスプレイは $$…$$。エッジケースは CLAUDE.md を参照。

  • マシンタグ を本文に記述: #area:calculus#see:other-slug、または単独の #question。UI はこれらを散文から隠し、チップとして描画します。

  • Wiki リンク: [[some-slug]](オプションで [[some-slug|表示テキスト]])はサーバーサイドで解決され、リーダーで開きます。

完全な仕様: CLAUDE.md

任意 — 兄弟コードラボ

モデル、ノートブック、図のためのコンパニオン Python リポジトリが必要な場合は、scriptorium-template を兄弟チェックアウトとして使用してください:

your-workspace/
  aedificium/          # this repo
  scriptorium/         # from scriptorium-template

scriptorium の aedificium.py ブリッジを使うと、ノートブックのセルが aedificium の散文をインラインで描画し、matplotlib の図を aedificium/assets/ に直接保存できます。2 つが兄弟でない場合は、AEDIFICIUM_DIR(scriptorium 側)または AED_SCRIPTORIUM_DIR(こちら側)を設定してください。

GitHub のセットアップ

LFS をローカルにインストールしたら、通常どおり GitHub にプッシュします:

git remote set-url origin git@github.com:clausd/aedificium.git
git push -u origin main

自動プッシュは各自動コミットの後(デバウンス 5 秒)に実行されます。AED_NO_PUSH=1 で無効にできます。GitHub LFS の無料枠はアカウントあたり毎月ストレージ 1 GB / 帯域幅 1 GB で、最大数百件の論文からなる個人用 PDF ライブラリには十分な余裕があります。

環境設定

変数

デフォルト

効果

AED_PORT

8788

HTTP + WebSocket ポート。

AED_NO_GIT

unset

すべての自動コミットを無効にする。

AED_NO_PUSH

unset

自動コミットはするが自動プッシュはしない。

AED_NO_CHAT_CHECKPOINT

unset

チャットログのチェックポイント作成を無効にする。

AED_PUSH_DEBOUNCE_MS

5000

複数のコミットを 1 回のプッシュにまとめる。

AED_CHAT_IDLE_MS

300000

チャットチェックポイントまでのアイドル時間。

AED_CHAT_MAX_MS

900000

強制チェックポイントまでのチャットの最大経過時間。

AED_SCRIPTORIUM_DIR

../scriptorium

#code: タグの解決先。

AED_EDITOR_URL

vscode://file/{path}

カードの「エディタで開く」URL スキーム。

トラブルシューティング

  • 「チャットペインに入力しても何も起こらない。」 ほとんど常に --dangerously-load-development-channels server:aedificium フラグの欠落が原因です。そのフラグを付けて Claude Code を再起動してください。

  • 「Claude が reply ツールは利用できないと言う。」 Bun が孤児化しています。ポート 8788 のプロセスを強制終了し、Claude Code を終了して再起動してください。

  • git push が PDF を拒否する(100 MB を超えています)。」 PDF を追加したときに LFS が有効になっていませんでした。git lfs install を実行し、次に git lfs migrate import --include="*.pdf" --everything を実行し、その後 git push --force-with-lease を実行してください(自分だけがクローンしている場合にのみ安全です)。

  • 「自動コミットが停止した。」 bun の stderr を確認してください。最も一般的な原因は、マシン間での data/chat.jsonl のマージ競合です。競合は通常、両側の和集合になります(chat.jsonl は追記専用です)。

ライセンス

MIT。自由に改変してください。重要なのは、あなた自身がノートを所有しているということです。

クレジット

オリジナルのコンセプト、アーキテクチャ、実装は Claus Dahl によるものです。2 リポジトリへの分割(散文 ↔ コード)は、中世の写字室が修道院図書館を支えた方法に着想を得ています。そこから名前が来ています。

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Persistent context for Claude. Your AI always knows your projects and next actions across sessions.

  • Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/clausd/aedificium-template'

If you have feedback or need assistance with the MCP directory API, please join our Discord server