誰の言葉かを分ける
発言・決定・推測を分けて記録します。エージェントの推測が、あなたの決定になりすますことはありません。
出力ファイルに UTF-8 BOM を付ける
「付けてください。ないと日本語が文字化けします。」高橋 · 10:12 · Q-1 に回答
議論から実装まで、プロジェクトの理解を揃える。
依頼や制約は散らばり、同じ要件でも読み方が分かれます。
出典のある一つの理解に揃え、コミットの証拠は議論に戻します。
以下は「請求書のエクスポート」についての議論です。メッセージをオンにすると、Nema が項目に整理し、誰かの発言か、誰かが決めたことか、エージェントの推測かを記録します。
発言・決定・推測を分けて記録します。エージェントの推測が、あなたの決定になりすますことはありません。
出力ファイルに UTF-8 BOM を付ける
「付けてください。ないと日本語が文字化けします。」高橋 · 10:12 · Q-1 に回答
ナレッジベース自体が Git リポジトリです。何が、なぜ、どう変わったかをいつでもさかのぼれます。
ローカルのリポジトリを紐づけると、エージェントが main ブランチのスナップショットを読んで検索します。議論の時点で既存の実装を踏まえられます。
コードから描いた図は、どのコミットを元にしたかを覚えています。コードが変わると、図にそう表示されます。
曖昧な点や、有効な決定と食い違う発言は確認事項になります。Nema は尋ね、あなたの回答を待ちます。赤で示すのは、あなたの回答が必要なものだけです。
中国語・英語・日本語の画面をいつでも切り替えられます。項目を記録する言語は別に設定できます。
まずルームで議論する。項目は自動で整理される。
次に、曖昧な点をひとつずつ確かめる。
開発パッケージを承認し、コーディングエージェントに渡す。
コミット報告は議論に戻る。
デスクトップ版はすべてを 1 つのアプリにまとめています。データベース、ローカルコア、Node を同梱し、Git はパソコンに入っている 2.31 以降を使います。Mac では Finder から開いたときも Homebrew と MacPorts の Git を見つけます。Docker もデータベースサーバーも不要です。議論の内容は選んだモデルプロバイダーにだけ送られ、GitHub のトークンを Nema が扱うことはありません。
現状
できます。最新リリースには Windows x64 のインストーラー、Windows のポータブル ZIP、Apple シリコン向けのディスクイメージがあります。ZIP は展開してそのまま実行するアプリです。展開して Nema.exe を実行します。ショートカットもアンインストーラーもありません。インストーラーと ZIP はどちらも ~/.nema/desktop を使います。どちらか一方を選んでください。未署名のため、Windows では初回に「Windows によって PC が保護されました」と表示され、macOS では「プライバシーとセキュリティ」から開きます。アプリには Git 2.31 以降も必要です。Intel Mac 向けのデスクトップ版はありません。Linux では linux/amd64 の hub と web イメージを使うか、ソースからビルドします。
Nema Room 自体は MIT ライセンスのオープンソースです。項目の整理にはモデルを呼び出すため、費用や利用枠は選んだプロバイダーによります。ChatGPT や Claude のサブスクリプション、または自分の API キーを使えます。
データベースとナレッジベースはあなたのパソコンにあります。項目を生成するときだけ、関連する内容が選んだモデルプロバイダーに送られます。サービスは既定でローカルのみで待ち受けます。インターネットに直接公開しないでください。
nema report install で Codex や Claude Code に報告フックを入れます。コミットのたびに Nema へ通知され、Nema が動いていないときは手元に保存して次回送ります。
初版は 1 人が自分のパソコンで使うものです。複数端末の同期、バックアップ、チームの閲覧専用アクセスは、ローカルコアの完成後に対応します。
名は根回しに由来します。決定の前に理解を揃えつつ、食い違いも根拠も見える形で残します。

Windows x64 と Apple シリコン向けのビルドは最新リリースにあります。Windows ではインストーラーかポータブル ZIP のどちらかを選びます。ZIP は展開して Nema.exe を実行します。ショートカットもアンインストーラーもありません。どちらも ~/.nema/desktop を使います。パソコンには Git 2.31 以降が必要です。
ホストのコマンドは nema で、npm i -g @nema-project/nema@<locked version> から入ります。この数字は取得した docker-compose.yml の 2 つの image: が固定している版です。hub と web のイメージは linux/amd64 です。docker-compose.yml は最新 Release の固定名の資産で、両イメージをその Release の版に固定してレンダリングしたものです。取得したら 2 つの固定が同じ版か確かめ、NEMA_IMAGE_TAG=<その版> を .env に書いてから起動します(既存の値があればそれを使い、releases/download/v<locked>/docker-compose.yml を取得します)。v0.1.6 のファイルの先頭にはテンプレートの「インストール可能な版ではない」というコメントが残っていますが、固定された 2 行の image: が正しい情報です。v0.1.6 より前の固定にはリリース資産がないため、raw.githubusercontent.com/Nema-Project/nema-room/v<locked>/docker-compose.yml を取得します。Linux と macOS では先に NEMA_UID と NEMA_GID を export します。このリポジトリを開発するときは、clone してセットアップウィザードを実行します。
# hub と web。linux/amd64 のみ。compose ファイルは最新 Release の固定名の資産です。.env に NEMA_IMAGE_TAG があればその版を使います。
NEMA_FETCHED= NEMA_LOCKED= NEMA_UP= NEMA_INSTALLED=
NEMA_PIN=$(sed -n 's/^NEMA_IMAGE_TAG=//p' .env 2>/dev/null | tail -1)
NEMA_URL=https://github.com/Nema-Project/nema-room/releases/latest/download/docker-compose.yml
test -n "$NEMA_PIN" \
&& NEMA_URL=https://github.com/Nema-Project/nema-room/releases/download/v$NEMA_PIN/docker-compose.yml
{ curl -fsSL -o docker-compose.yml.download "$NEMA_URL" \
|| { test -n "$NEMA_PIN" && curl -fsSL -o docker-compose.yml.download \
"https://raw.githubusercontent.com/Nema-Project/nema-room/v$NEMA_PIN/docker-compose.yml"; }; } \
&& mv docker-compose.yml.download docker-compose.yml && NEMA_FETCHED=1
# hub と web が一致すれば版を、.env がその版を固定していれば locked を表示します。どちらかが出なければ止めます。
NEMA_VERSION=$(grep -o 'nema-room-hub:[0-9.]*' docker-compose.yml | head -1 | cut -d: -f2)
WEB_VERSION=$(grep -o 'nema-room-web:[0-9.]*' docker-compose.yml | head -1 | cut -d: -f2)
test -n "$NEMA_FETCHED" && test -n "$NEMA_VERSION" && test "$NEMA_VERSION" = "$WEB_VERSION" \
&& echo "$NEMA_VERSION"
test -n "$NEMA_FETCHED" && test -n "$NEMA_VERSION" && test "$NEMA_VERSION" = "$WEB_VERSION" \
&& { test -n "$NEMA_PIN" || printf '\nNEMA_IMAGE_TAG=%s\n' "$NEMA_VERSION" >> .env; } \
&& test "$(sed -n 's/^NEMA_IMAGE_TAG=//p' .env | tail -1)" = "$NEMA_VERSION" \
&& NEMA_LOCKED=$NEMA_VERSION && echo "locked $NEMA_LOCKED"
# 各手順は前の手順が成功したときだけ実行されます。.env で NEMA_HUB_PORT や NEMA_DATA_HOST_DIR を設定したら先に同じ値を export します。
export NEMA_UID="$(id -u)" NEMA_GID="$(id -g)" # Linux and macOS only
NEMA_DIR=${NEMA_DATA_HOST_DIR:-$HOME/.nema/data}
test -n "$NEMA_LOCKED" && mkdir -p -m 700 "$NEMA_DIR" && test -w "$NEMA_DIR" \
&& NEMA_IMAGE_TAG=$NEMA_LOCKED docker compose up -d --wait && NEMA_UP=1
test -n "$NEMA_UP" && npm i -g "@nema-project/nema@$NEMA_LOCKED" && NEMA_INSTALLED=1
# Compose は daemon を起動しません。動かし続けてください。
test -n "$NEMA_INSTALLED" \
&& NEMA_DATA_DIR=$NEMA_DIR nema daemon --hub "http://127.0.0.1:${NEMA_HUB_PORT:-4400}"
# またはこのリポジトリをソースからビルド
git clone https://github.com/Nema-Project/nema-room.git
cd nema-room
node scripts/setup.mjs --lang ja
最新版をダウンロード