Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Serve a secret to an agent exactly N times from locked RAM, then wipe it and self-destruct.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
リンク先は作者自身のファイルです。私たちが置いたり再パッケージしたりしたものではありません。ファイルを開くと、Claude Desktopがインストールします。
ターミナルでこれを実行します
ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント New1Direction で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.0)がレジストリに届いたのは5 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにMCPBも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Excaliself
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Find, read, create, edit, and organize Excalidraw drawings in your self-hosted Excaliself instance.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Burn-after-reading secrets for AI agents.
ningen-shikkaku ships two small Rust binaries — `dazai` (the session-bound daemon) and `motokano` (a self-immolating one-shot MCP server).
Your MCP configs are full of plaintext API keys, and every agent you run can read all of them — and they keep working long after the agent is done. dazai inverts that: secrets live in locked, non-swappable RAM, are served to agents over MCP, and are destroyed after N reads — or the instant your session dies.
motokano --calls 1 --tool 'name=get_key,kind=static,value=s3cr3t' --arm
Point any MCP client at it and call get_key once → you receive s3cr3t → the server wipes the value out of locked memory and SIGKILLs itself. Call again → the process is gone.
# prebuilt binaries (macOS arm64/x86_64, Linux x86_64/arm64)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/New1Direction/ningen-shikkaku/releases/latest/download/dazai-installer.sh | sh
brew install New1Direction/tap/dazai New1Direction/tap/motokano
git clone https://github.com/New1Direction/ningen-shikkaku cd ningen-shikkaku/rs cargo build --release # -> target/release/{dazai, motokano} cargo build --release --features seccomp # Linux: seccomp syscall allowlist
Prebuilt binaries are built with default features; the seccomp-confined daemon is a from-source build (it links libseccomp — install libseccomp-dev + pkg-config first).
# a one-shot secret an agent can read exactly once:
claude mcp add burn-once -- motokano --calls 1 --arm \ --tool 'name=get_key,kind=static,value=YOUR-SECRET'
dazai daemon --arm --grace 5 & claude mcp add dazai -- dazai mcp
Any MCP client works the same way — the transport is plain stdio.
The same daemon is a session kill-switch. Any MCP client registers its PID; when your shell/SSH session dies, your heartbeat stops, or a panic signal arrives, dazai SIGKILLs every registered process, overwrites its secrets with a wipe the compiler can't optimize away, and exits. Walk away: agents die, secrets burn.
dazai daemon --ping-timeout 15 # terminal A (dry-run by default; --arm makes it real)
dazai client --interval 5 # terminal B
It runs only on your own machine, on your own secrets and your own configured tools. It never touches another process, file, or host.
It ships in two layers:
mlock (no swap), madvise(MADV_DONTDUMP) + prctl(PR_SET_DUMPABLE, 0) (no core dumps / no ptrace), a seccomp syscall allowlist (no execve/open/connect/…), and a non-elidable explicit_bzero / memset_s wipe; andpython-reference.md).| Component | What it does |
|---|---|
dazai daemon | The watchdog: holds mlock'd secrets + a UNIX-socket heartbeat; wipes and self-destructs on session loss. seccomp-confined on Linux. |
dazai client | The heartbeat client — ties the daemon's life to a shell / SSH session. |
dazai mcp | An MCP server exposing the daemon as tools, so any agent can register its PID for session-bound protection (it gets SIGKILLed if your session dies). |
motokano | A standalone self-immolating MCP server: serve N tool calls, then wipe secret state and exit. |
| Python reference | secmem.py / deadman.py / heartbeat.py / shellrc.sh — the portable proof-of-concept. |
flowchart LR
A["MCP client / AI agent (stdio transport)"]
subgraph Daemon["dazai daemon (kikka Watchdog)"] D["dazai daemon mlock'd SecretBuffers (goodnight) seccomp-confined on Linux (kekkai)"] SOCK[("UNIX socket 0600 HELLO heartbeat + REGISTER / ARM / STATUS")] end
MCPD["dazai mcp (rei · rmcp server)"] HB["dazai client (heartbeat: HELLO / PING)"] MOTO["motokano (self-immolating MCP server) static values in SecretBuffer"] KILL{{"wipe (explicit_bzero / memset_s)
A -->|"register pid / status / panic"| MCPD A -->|"get_key (static, N reads)"| MOTO MCPD -->|"relay verbs + signals via pidfile"| SOCK HB -->|"holds liveness connection"| SOCK SOCK --- D MOTO -. "optional --dazai-socket: register + monitor" .-> SOCK D ==>|"on trigger: SIGKILL registered PIDs, then wipe + self-SIGKILL"| KILL MOTO ==>|"after N calls / EOF / daemon death: wipe + exit"| KILL HB -. "drop / ping-timeout / panic signal" .-> D
dazai daemon and motokano can feed Korg's tamper-evident ledger: --korg-sink PATH (or /dev/fd/N for a pre-opened descriptor) appends one Korg append-shape record per arm, session, read, wipe and kill step. Records carry only fixed-vocabulary fields and counters. Secret values, lengths, digests, tool names, arguments, paths and the environment are never recorded. Korg imports the file through its ningen-shikkaku.lifecycle@v2 envelope profile and assigns sequence numbers, hashes and signatures. See Korg lifecycle records.
daZai shrinks the *window* and the *surface* in which plaintext secrets are reachable, and makes session-end deterministically destroy them.
It protects against:
| Risk | How |
|---|---|
| Secrets paged to swap | mlock locks the buffers into RAM |
| Secrets captured in core dumps | madvise(MADV_DONTDUMP) + prctl(PR_SET_DUMPABLE, 0) (Linux) |
| Session loss leaving secrets resident | heartbeat drop / logout → wipe + SIGKILL |
| Secrets lingering in process memory after use | explicit_bzero / memset_s — a wipe the compiler may not elide |
| A confined process escaping | seccomp allowlist denies execve / open / connect / ptrace / … (Linux) |
| ptrace snooping the daemon | prctl(PR_SET_DUMPABLE, 0) (Linux) |
It does NOT protect against (and the project is deliberately honest about this):
motokano's kind=exec tools return a command's stdout, which is OS-buffered and not held in a locked buffer. Use kind=static (a pre-loaded, locked, wipeable value) when you need the wipe guarantee.bytes freely, so a secret may transiently live in unlocked heap before/after the locked buffer. The Rust implementation eliminates this for its own buffers (data is written into the locked mapping and never copied to a GC heap); the Python tier is a *reference*, not a hard guarantee./proc/ /mem, a debugger) reading memory before the wipe. mlock stops swap, not memory reads; seccomp + PR_SET_DUMPABLE raise the bar on Linux, but an adversary who already has privileged access to your running machine is out of scope.kill -9, power loss): the wipe path can't run, so nothing is zeroed. The mechanism is best-effort on these paths and never claims otherwise.In short: daZai is not, and cannot be, a guarantee against an attacker who already owns your running machine. It is a sharp tool for making secrets ephemeral and session-bound, with every limitation stated up front.
aarch64 (locally) and x86_64 (CI) — where the daemon installs the live filter and the full integration suite runs against it with no SIGSYS.--features seccomp), clippy -D warnings, and rustfmt --check on x86_64 Linux as a permanent regression gate.Deep technical docs (per-crate design, the seccomp allowlist, the adversarial-review history) live in rs/README.md; the Python proof-of-concept is in python-reference.md.
Named for the novelist Osamu Dazai, whose work circles themes of disappearance and self-erasure — fitting for software whose defining act is to wipe itself out the moment it is no longer being watched over. The repository takes its name from his novel *No Longer Human* (人間失格, *Ningen Shikkaku*). It's flavor, not a manifesto; the software just self-destructs on cue.
MIT © 2026 New1Direction.