Skip to main content
Glama

Mitos

Status: Alpha PyPI Python 3.13+ License: Apache-2.0 MCP Registry

🔧 早期リリース — 活発に開発中

AI アシスタントと数ヶ月にわたってソフトウェアを開発していると、あなたが下してきた決定の背後にある推論が失われていきます。アシスタントはなぜそのアプローチを選んだのかを忘れ、すでに却下した選択肢を再提案し、設計メモは実際に決定された内容から乖離していきます。Mitos はそうした決定のためのメモリ層です。各決定、除外した代替案、後から決定が以前の決定をどのように置き換えていくかを記録し、その履歴をコンパクトで信頼できる形で AI アシスタントに戻します。

その結果、AI コラボレーターはあなたが実際に下した判断と一貫した状態を保ちます。過去の決定に矛盾したり、決着済みの論点を蒸し返したりせず、あなたの決定記録が静かに腐敗することもありません。

内部設計は次のとおりです。人間のための Markdown(decisions.md が、いつでも読めて grep も効く正本)、エージェントのための型付きグラフ(SQLite と意味的検索のためのローカル Qdrant)、そしてエージェントが決定する前に前例を確認し、決定時に記録するための MCP サーバー。

PyPI と MCP Registry から入手できます。


最速のインストール: エージェントに任せる

AI コーディングエージェント(Claude Code、Cursor、Gemini CLI、…)を使っているなら、最も簡単な方法はセットアップをエージェントに任せることです。mitos を入れたいプロジェクトで、エージェントに以下を渡してください。

Read https://github.com/dovahkiin-v/mitos/blob/main/SETUP.md and set up mitos
for this project. When done, run `mitos status .` from the project directory
and report the result.

エージェントが最終的に行うことは、人間が手動で行う手順と同じであり、すべて先に読める SETUP.md にまとまっています。

  • pipx で mitos CLI をインストールする(PyPI またはこのリポジトリから);

  • ローカル Qdrant コンテナを起動する(qdrant/qdrant をポート 7333 で。すでに動かしている他の Qdrant とは隔離されます);

  • マシン全体に対して MCP サーバーを一度だけ登録する(未登録の場合);

  • プロジェクトのワークスペースを初期化する。これによりプロジェクト名でも登録されます;

  • API キーを自分自身で設定するように求める(mitos set-key)— Gemini キー(必須)と、紛争監査レイヤー用の Anthropic キー(強く推奨)。セットアップガイドは、エージェントがキー値を扱わないよう指示します。

途中でエージェントがどれだけ質問するかは、このプロンプトではなく、あなたのエージェント側の設定によって決まります。

Related MCP server: mcp-adr

手動セットアップ

同じ手順を手作業で行う方法 — 詳細は SETUP.md にあります。

  1. インストール(各マシンに一度): pipx install mitos-adr

  2. Qdrant の起動(各マシンに一度。全プロジェクトで共有): このリポジトリから docker compose up -d — mitos は自身のインスタンスを :7333 で実行するため、他の仕事で使っている Qdrant には一切触れません。

  3. MCP サーバーの登録(各マシンに一度。エージェントに推奨): claude mcp add --scope user mitos -- mitos serve。一度の登録で全てのプロジェクトに提供できます。そのために必要なこと、他のハーネスの場合、そして残ってしまったプロジェクト単位の .mcp.json エントリをなぜ削除しなければならないかは SETUP.md を参照してください。

  4. プロジェクトごと: プロジェクトルートから mitos init を実行し、次に mitos set-key --global <your-Gemini-key>(1 つのキーですべてをカバーできます。空き取得先は https://aistudio.google.com/app/apikey)。Gemini は今検証済みの埋め込みプロバイダーです。マルチプロバイダー対応の抽象化はロードマップに載っています。

  5. 確認: mitos status . → READY ✓

mitos status . は常に羅針盤です。そのプロジェクトで何が終了し、何が欠けていて、次に何をすべきかを正確に示します。プロジェクト名を指定しない mitos status はもう一つの疑問 — このマシンには何があるか — に答え、登録済みの全プロジェクトを一覧し、Qdrant をチェックします。

すべてのコマンドはプロジェクトを名前で指定します。 デフォルトのターゲットはありません。mitos init はプロジェクトを名前で登録し、以後の各動詞は -p <name>、-p <absolute path>、またはプロジェクトルートから -p . を取ります(エージェントは同じ値を project 引数として渡します)。mitos projects は登録内容を一覧表示します。これにより、1 回のインストールと 1 つの MCP サーバーが、誤ったコーパスに呼び出すことなく、マシン内のすべてのプロジェクトに提供できます。

動作の仕組み

Mitos はプロジェクト単位です — 各プロジェクトは独自の決定グラフと独自の Qdrant コレクションを持ちます。日常的には、3 つの動詞がサイクルを担います(エージェント向けには MCP ツール、それぞれ同一機能の CLI 版付き)。

動詞

使用場面

surface_decisions(mitos surface)

決定する前 — 先例はありますか? 各ヒットには、すでに却下された代替案とその理由がすべて含まれています。

record_decision(mitos record)

何かが確定した瞬間 — 決定内容、却下した選択肢、そして以前の決定との関係(supersedes、amends、…)。

query_decisions(mitos query)

意味または正確なハンドルで検索します。

知っておくと役立つ特性:

  • Markdown が正本です。 すべての決定は decisions.md に入り、人間が読めて grep もできます。グラフと検索インデックスはそこから導出され、いつでも再構築できます(mitos rebuild)。

  • 決定は編集も削除もされません — 後継で置換されます。 状態(active / superseded / amended)は決定間の型付き関係から計算されるため、なぜの履歴は常に残ります。

  • 安全側にフェイルします。 検索インデックスや埋め込み API がダウンしても、記録は機能し、検索は Markdown に対する誠実なテキストマッチに縮退します。ブロックも損失もなく、劣化した出力は劣化していると明示します。

  • 自己監査します。 コーパス全体のスキャン(mitos check -p .)が、互いに暗黙に矛盾している決定を見つけます。--staged は新しいエントリを pre-commit や CI ステップとしてセーフティします。フック、CI、cron のレシピは SETUP.md にあり、それぞれプロジェクトを3とおりの方法で指定します。

残りは mitos --help で探索できます — ヘルプテキストを API リファレンスとして兼ねています。

なぜ存在するのか

集中的な LLM による設計レビューを通じてソフトウェアを開発すると、人が追跡できる速度を超えてアーキテクチャ上の決定が生まれます。そのスタイルで 1 ヶ月 作業しただけで、ほぼ 900 件の決定記録が単一の Markdown ファイルに蓄積されました — もはや手で grep できず、読めず、管理するにも手に負いませんでした。既存の ADR ツールは、たまに決定を記録する人間のチーム向けに作られています。mitos は、AI アシスタントが決定を継続的に生み出し消費する、個人開発者向けに作られています。

それがあなたの働き方なら、プロジェクトの規模は大きな問題ではありません。決定量が多ければ多いほど、mitos は便利なものから必須のものへと速く移ります。

開発

pip install -e '.[test]'
MITOS_NO_LIVE_TESTS=1 pytest -m "not packaging" -n auto   # offline suite, parallel (~50s)
pytest -m "not packaging"                                 # adds the live tier — serial only
pytest -m packaging                                       # real-install check: fresh venv + pip install

-n auto はオフラインスイートには安全ですが、ライブ層では安全ではありません。テストコレクションのスイープがセッションスコープになっているため、並列ワーカーが互いの Qdrant コレクションを削除し、影響を受けたテストは失敗ではなくスキップに縮退します。

*_live.py スイートと golden Layer B は、あなたのキーに対して実際の Gemini および Anthropic API 呼び出しを行い、Qdrant が :7333 にある必要があります。キーが見つからない場合はスキップするため、新しいクローンではデフォルトで高速パスが実行されます。

キーは、環境、リポジトリルートの .env、または ~/.config/mitos/.env から解決されます — つまり、すでに mitos を使っている場合、テスト実行があなたの個人キーを拾って消費する可能性があります。明示的にオプト逐一してくださいアウトしてください。

MITOS_NO_LIVE_TESTS=1 PYTHONPATH=. pytest -m "not packaging"

正規の決定フォーマットは mitos/format-spec.md にあります。ライセンス: Apache 2.0。

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers