トークンの管理
Takumi Guard には2種類のトークンがあります。いずれも npm・PyPI・RubyGems・Go モジュールの全パッケージマネージャーで共通して利用でき、設定方法も同じです。セットアップコマンドは npm / PyPI / RubyGems / Go モジュール の各クイックスタートを参照してください。
| トークン | プレフィックス | 発行方法 | 用途 |
|---|---|---|---|
| メール認証トークン | tg_anon_ | メール登録 | 個人の開発環境(Shisho Cloud アカウント不要) |
| 組織ユーザートークン | tg_org_ | コンソールまたは Guard API | 組織全体のインストール追跡 |
メール認証トークン
以下のエンドポイントはメール認証トークンに適用されます。認証が必要なリクエストにはすべて Authorization: Bearer <APIキー> を使用します。
メールアドレスの登録
メールアドレスを登録すると、メール認証トークンが発行されます。
curl -X POST https://npm.flatt.tech/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "language": "ja"}'
language フィールドは省略可能で、デフォルトは "en"(英語)です。"ja" を指定すると、すべてのメールが日本語で届きます。
API キーはウェルカムメールに直接記載されているため、確認用リンクをクリックする必要はありません。
トークンステータスの確認
curl -H "Authorization: Bearer tg_anon_xxxxxx" \
https://npm.flatt.tech/api/v1/tokens/status
最終使用日時を含む利用統計情報が返されます。
トークンの確認方法
API キーは登録時に届くウェルカムメールに記載されています。また、パッケージマネージャーは認証情報を平文の設定ファイルに保存するため、セットアップ時に保存された場所からトークンを復元することもできます。
パッケージマネージャーは平文の認証情報のみをサポートしています。これは各パッケージマネージャーの認証プロトコルの制約であり、Takumi Guard の設計上の選択ではありません。
npm
トークンは .npmrc(プロジェクトレベルまたはユーザーレベルの ~/.npmrc)に保存されています。
cat ~/.npmrc | grep flatt.tech
# 出力: //npm.flatt.tech/:_authToken=tg_anon_xxxxxx
yarn berry(v2+)の場合は .yarnrc.yml を確認してください。
grep npmAuthToken .yarnrc.yml
bun の場合は bunfig.toml を確認してください。
grep token bunfig.toml
pip / uv
pip config set で設定した場合(推奨)は、以下のコマンドで保存された値を確認できます。
pip config get global.index-url
# 出力: https://token:tg_anon_xxxxxx@pypi.flatt.tech/simple/
uv の場合は環境変数を確認してください。
echo $UV_DEFAULT_INDEX
# 出力: https://token:tg_anon_xxxxxx@pypi.flatt.tech/simple/
環境変数で設定した場合は、シェルプロファイル(.bashrc、.zshrc など)を確認してください。
echo $PIP_INDEX_URL
# 出力: https://token:tg_anon_xxxxxx@pypi.flatt.tech/simple/
uv.toml(ユーザーレベル: ~/.config/uv/uv.toml、プロジェクトレベル: uv.toml または pyproject.toml)で設定した場合は以下を確認してください。
grep -r flatt.tech ~/.config/uv/uv.toml uv.toml pyproject.toml 2>/dev/null
Poetry
poetry config http-basic.takumi-guard
# 出力: Username: token, Password: tg_anon_xxxxxx
RubyGems
トークンは ~/.bundle/config に保存された Bundler のミラー URL に埋め込まれています。
bundle config get mirror.https://rubygems.org
# 出力: https://token:tg_anon_xxxxxx@rubygems.flatt.tech/
Go モジュール
トークンは ~/.netrc の golang.flatt.tech の行のパスワード欄に保存されています。
grep golang.flatt.tech ~/.netrc
# 出力: machine golang.flatt.tech login token password tg_anon_xxxxxx
トークンのローテーション
現在のキーがある場合:regenerate エンドポイントを使ってすぐにローテーションできます。
curl -X POST \
-H "Authorization: Bearer tg_anon_xxxxxx" \
https://npm.flatt.tech/api/v1/tokens/regenerate
レスポンスに新しいキーが含まれています。古いキーは即座に無効化されます。古いキーを使用しているすべてのパッケージマネージャーの設定を更新してください。
- npm:
.npmrcを更新(//npm.flatt.tech/:_authToken=<新しいキー>) - pip:
pip config set global.index-url https://token:<新しいキー>@pypi.flatt.tech/simple/を再実行(環境変数を使用している場合はPIP_INDEX_URLを更新) - uv: シェルプロファイルの
UV_DEFAULT_INDEXを更新 - poetry:
poetry config http-basic.takumi-guard token <新しいキー>を実行 - RubyGems:
bundle config set --global mirror.https://rubygems.org https://token:<新しいキー>@rubygems.flatt.tech/を再実行 - Go:
~/.netrcのmachine golang.flatt.tech行のパスワード欄を更新
キーを紛失した場合:まずパッケージマネージャーの設定からの復元をお試しください。どこにも見つからない場合は、同じメールアドレスで再登録してください。
curl -X POST https://npm.flatt.tech/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "language": "ja"}'
メールアドレスがすでに確認済みのため、既存トークンの確認方法、追加エコシステムのセットアップコマンド、およびワンタイムリセットコードを含むメールが送信されます。メールにはメールアドレスとリセットコードが埋め込まれた、そのままコピーして実行できるコマンドが記載されています。
curl --json '{"email": "you@example.com", "code": "XXXX"}' \
https://npm.flatt.tech/api/v1/tokens/reset
リセットコードの有効期限は 1 時間です。レスポンスに新しいキーが含まれ、古いキーは即座に無効化されます。コードの有効期限が切れた場合は、再度登録リクエストを送信すれば新しいコードが届きます。この操作はいつでも繰り返し実行できます。
メールアドレスは、各エコシステムのエンドポイント(npm.flatt.tech・pypi.flatt.tech・rubygems.flatt.tech・golang.flatt.tech)のいずれに送信しても構いません。これらはすべて同じトークンデータベースを共有しているため、どのエンドポイントを使用しても、取得したトークンはすべてのエコシステムで利用可能です。
トークンの失効
curl -X DELETE \
-H "Authorization: Bearer tg_anon_xxxxxx" \
https://npm.flatt.tech/api/v1/tokens
トークンは即座に無効化されます。
失効後、無効化されたトークンを使ったコマンドはすべてのエコシステムで 401 エラーで失敗します。失効前に .npmrc、環境変数、poetry の設定、Bundler のミラー設定、~/.netrc を更新してください。