
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
使い方
インストールして init
npm i ninka-authz して npx ninka init。authz/ フォルダと check() の窓口、エージェント用の規約ができます。アカウント登録はありません。
エージェントに頼む
「請求書の削除 API を作って。消せるのは admin だけ」。手形を書いて、コンパイルして、エラーを直すところまでエージェントがやります。人間は diff を見て OK を出すだけです。
アプリは check() を呼ぶ
認可の if 文はアプリから消えます。CI に npx ninka verify を入れておくと、手形とビルド結果がズレたときに落ちてくれます。
Use Cases
想定しているチーム
エージェントでプロダクトを作っているチーム
if 文が散らばる前に、認可の置き場所を決めておく用途です。検査がエージェントのループに入るので、モデルの出来に品質が引っ張られません。
Supabase RLS から次に進むチーム
判定が DB の外に出た。approve や export みたいな操作が増えた。監査が来た。よくある卒業のタイミングです。
Pricing
料金
ローカルで動くもの(CLI・コンパイラ・ランタイム)は全部無料です。お金をもらうのは、チームの承認フローと本番用の署名から。
Free
個人開発なら、これで完結します。
- • CLI 一式(init / compile / build / verify / explain)
- • コンパイル・検査は回数無制限
- • アプリ内 WASM ランタイム(check())
- • TypeScript 型生成
Ninka Cloud(準備中)
手形の変更を PR で検出して、承認の記録を残す GitHub App です。
- • 手形単位の承認フロー
- • AI の解釈メモをレビューコメントに展開
- • 承認記録の保存
- • 本番用の署名
Enterprise(準備中)
SSO や監査対応が必要な組織向けです。
- • 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)
- ✓設計の相談も歓迎です