CLI
ninka コマンドラインインターフェースの完全なリファレンスです。各コマンドについて、構文・引数・
挙動・出力・終了コードを記載します。
概要
- パッケージ:
ninka-authz—npm install ninka-authz。CLI とランタイムを同梱します。 - バイナリ:
ninka— 通常はnpx ninka <command>として実行します。 - Node.js: 20 以降。
usage: ninka <command>
init [--bare] Set up authz/ and the agent rules (AGENTS.md); --bare omits the sample policy
compile [files...] Sekisho + Rego + manifest + types + WASM (pinned opa, fetched once)
build compile, but fail when the pinned opa toolchain is unavailable (CI use)
verify Recompile and require byte-identity with authz/out/ (CI gate)
explain <policy> Human-readable summary of a policy
--help や --version フラグはありません。
終了コード
| 状況 | 出力 | 終了コード |
|---|---|---|
| 成功 | コマンドの出力 | 0 |
| 未知または未指定のコマンド | USAGE を stderr に出力 | 2 |
| 例外がスローされた場合 | error: <message> | 1 |
ninka init [--bare]
Ninka 向けにプロジェクトをスキャフォールドします。冪等で、既存ファイルはスキップされ、上書きされません。
| フラグ | 説明 |
|---|---|
--bare | サンプルポリシー(authz/invoice-access.tegata.json)を省略します。 |
何をするか
以下を作成します。既存のものはスキップします。
| パス | 内容 |
|---|---|
authz/tegata-0.1.schema.json | Tegata の JSON Schema。 |
authz/invoice-access.tegata.json | サンプルポリシー。--bare で省略。 |
authz/vocabulary.json | 語彙の初期値: {"roles":["employee"],"actions":["view"],"resource_types":["invoice"],"attributes":{}}。 |
lib/authz.ts | 型付きの check() 境界。 |
AGENTS.md | AI コーディングアシスタントと協働するためのエージェントルール。 |
AGENTS.md については、ファイルが存在し ## Ninka Authorization Rules 見出しがない場合はルールを
追記します。見出しが既にある場合はそのままにします。他のエージェントファイルは編集しません。
スキャフォールド後、authz/*.tegata.json が存在すれば、init はただちに compile を実行し、
authz/out/ が生成された状態にします。
ninka compile [files...]
Tegata ポリシーを Rego・型・(OPA ツールチェーンが利用可能なら)WASM へコンパイルします。
| 引数 | 説明 |
|---|---|
[files...] | コンパイルする特定の Tegata ファイル。省略時は authz/*.tegata.json をすべてコンパイルします。 |
何をするか
意味検査器(関所 (Sekisho))をファイル単位で実行し、続いてセット全体で実行し、成果物を
authz/out/ へ出力します。意味上の問題が見つかった場合は、1 行の指示的なエラーで拒否します。
何を書き出すか
authz/out/ へ書き出します。
| ファイル | 常に出力 |
|---|---|
<id>.rego | はい |
<id>.manifest.json | はい |
input-contract.json | はい |
types.gen.ts | はい |
<id>.wasm | OPA ツールチェーンが利用可能な場合のみ |
<id>.build.json | OPA ツールチェーンが利用可能な場合のみ |
<id>.validation.json | OPA ツールチェーンが利用可能な場合のみ |
OPA ツールチェーンがないマシンでは、WASM は note: とともにスキップされます(関所・Rego・型は
成功します)。各ファイルの内容は 生成ファイル を参照してください。
終了コード
関所による拒否、または検証の不一致がある場合は 1、それ以外は 0。
ninka build
compile と同じですが、ピン留めされた OPA ツールチェーンを解決できない場合に ハードフェイル
します。WASM 成果物を必ず生成する必要のある CI で使用します。
終了コード
OPA ツールチェーンが利用不可の場合、関所による拒否、または検証の不一致がある場合は 1、
それ以外は 0。
ninka verify
CI ゲートです。メモリ上で再コンパイルし、コミット済みの authz/out/ との バイト同一性 を要求します。
何をするか
- 再コンパイルし、Rego・
types.gen.ts・検証テーブルをコミット済みファイルとバイト単位で比較します。 - WASM のハッシュを再チェックします。
- すべての検証ベクトルをコミット済みの WASM に対して再実行します。
終了コード
いずれかが不一致の場合は 1、それ以外は 0。
ninka explain <policy>
ポリシーの人間可読なサマリーを表示します。ファイルは書き出しません。
| 引数 | 説明 |
|---|---|
<policy> | ポリシー id または Tegata ファイルのパス。 |
何をするか
各ルールを [effect] id: roles → actions on resource — description として表示し、解釈レポートが
あれば併せて表示します。
OPA ツールチェーン
Ninka は OPA 上で動作する WASM を出力します。同じ Tegata が常にバイト同一の WASM を生成するよう、 OPA バージョンはピン留めされています。
- ピン留めされた OPA バージョン:
0.65.0。WASM のバイト列は OPA バージョンに依存するため、 これを更新することは明示的な新しいninka-authzリリースになります。 - Ninka は
PATH上のopaを決して使いません。システムや Homebrew のopaがビルドに紛れ込む ことはありません。
解決順
NINKA_OPA_PATH— OPA バイナリへのパス。エアギャップ環境やプロキシ環境の逃げ道です。- キャッシュ:
~/.cache/ninka/opa-v0.65.0-<platform>-<arch>。 - openpolicyagent.org からの一度きりのダウンロード(SHA-256 検証済み)。
環境変数
| 変数 | 効果 |
|---|---|
NINKA_OPA_PATH | この OPA バイナリを直接使用し、キャッシュとダウンロードをスキップします。 |
NINKA_CACHE_DIR | キャッシュディレクトリを上書きします。 |
サポートプラットフォーム
darwin-x64、darwin-arm64、linux-x64、linux-arm64、win32-x64。これら以外のプラットフォーム
では NINKA_OPA_PATH を設定してください。