Ninka background logo

Authorization for the AI Coding Era

認可のための、決定論的コンパイラ。

AIが書いた認可ルールを、毎回同じバイト列の Rego / WASM へ。アプリは check() を呼ぶだけ。

認可要件(自然言語)

AIエージェントが書く手形(Tegata)

コンパイルされた Rego(毎回同じ出力)

アプリは check() を呼ぶだけ

Problem

AIはアプリを書ける。認可は書けない。

書けているように見えるだけ。

AI に「admin だけ削除できるようにして」と頼むと、if (user.role === "admin") がいろんな場所に増えていきます。頼むたびに少しずつ違うコードが出てくるので、そのうち全体像が誰にもわからなくなる。 認可の事故は、だいたいこうやって起きます。

Features

中身は、コンパイラです

AI の出力と本番のあいだに挟む、認可専用の決定論的コンパイラ。前半が意味を検査して(関所)、後半がコードに変換します(金座)。入力となる JSON が手形です。

同じ入力なら、出てくるコードも同じ

コンパイラは乱数も時刻も参照しない純粋関数です。同じ手形からは、いつ誰が何回コンパイルしても 1 バイトも違わない Rego / WASM が出ます。だから「承認した JSON」と「動いているコード」が確実に対応する。ここが Ninka の本体です。

  • 100回コンパイルしてバイト比較するテスト付き
  • 生成コードにタイムスタンプや環境情報を一切埋め込まない
  • CI では ninka verify がビルド忘れや手書き改変で落ちる
  • Rego は誰も手で書かない

All Features

How It Works

使い方

1

インストールして init

npm i ninka-authz して npx ninka init。authz/ フォルダと check() の窓口、エージェント用の規約ができます。アカウント登録はありません。

2

エージェントに頼む

「請求書の削除 API を作って。消せるのは admin だけ」。手形を書いて、コンパイルして、エラーを直すところまでエージェントがやります。人間は diff を見て OK を出すだけです。

3

アプリは check() を呼ぶ

認可の if 文はアプリから消えます。CI に npx ninka verify を入れておくと、手形とビルド結果がズレたときに落ちてくれます。

Use Cases

想定しているチーム

エージェントでプロダクトを作っているチーム

if 文が散らばる前に、認可の置き場所を決めておく用途です。検査がエージェントのループに入るので、モデルの出来に品質が引っ張られません。

Supabase RLS から次に進むチーム

判定が DB の外に出た。approve や export みたいな操作が増えた。監査が来た。よくある卒業のタイミングです。

Pricing

料金

ローカルで動くもの(CLI・コンパイラ・ランタイム)は全部無料です。お金をもらうのは、チームの承認フローと本番用の署名から。

Free

個人開発なら、これで完結します。

¥0
(BUSL-1.1 で公開。ソースは読めます)
  • CLI 一式(init / compile / build / verify / explain)
  • コンパイル・検査は回数無制限
  • アプリ内 WASM ランタイム(check())
  • TypeScript 型生成
npm i ninka-authz

Ninka Cloud(準備中)

手形の変更を PR で検出して、承認の記録を残す GitHub App です。

Coming soon
  • 手形単位の承認フロー
  • AI の解釈メモをレビューコメントに展開
  • 承認記録の保存
  • 本番用の署名

Enterprise(準備中)

SSO や監査対応が必要な組織向けです。

Coming soon
  • SSO 連携
  • 監査エクスポート
  • 決定ログ分析
  • 導入支援

FAQ

FAQ

Q. AI に認可を書かせて大丈夫なんですか?

A. AI が書けるのは手形(JSON)までです。実行コードは必ずコンパイラ経由で、おかしい手形はコンパイルが通りません。事故るとしても「変な JSON が PR に出てくる」までで、そこで止まります。

Q. OPA や Rego の知識は要りますか?

A. 要りません。Rego は手形から生成されるだけで、誰も手で書きません。読みたくなったら読めます。

Q. OPA と競合するものですか?

A. しません。実行エンジンは OPA をそのまま使っています。Ninka が足しているのは「誰が何を承認したか」を扱う層です。

Q. Supabase RLS で足りているのですが。

A. 単一の Postgres で操作が CRUD の範囲なら、RLS でいいと思います。DB の外で判定したくなったときに思い出してください。

Q. 本当に無料ですか?

A. ローカルの道具は無料です。ライセンスは BUSL-1.1 で、読むのも改造するのも自由。禁止されているのは競合サービスとしての提供だけで、2030年には Apache-2.0 になります。

Next Step

まず手元で動かしてみてください

npx ninka init から check() まで、5分くらいです。

Contact Us

認可を、
承認できるかたちに。

いまは npm 公開の準備中です。 試してみたい方、認可まわりで困っている方は、フォームからどうぞ。

  • アカウント不要・ローカル完結
  • ソース公開(BUSL-1.1)
  • 設計の相談も歓迎です

お問い合わせ

0/500文字