runlot
コード

リポジトリ

Runlot が自分で運用する Git リポジトリです。clone も push も Runlot のアドレスに対して行い、アクセス権は組織のロールが決めます。

Runlot には Git リポジトリがあります。GitHub 連携ではなく、git clonegit push私たちのアドレスに対して動くリポジトリです。

cd my-project              # runlot.json のあるプロジェクトのディレクトリ
runlot repo create app
# my-org/my-project/app を作成しました
# origin を登録しました: [email protected]:my-org/my-project/app.git
git push -u origin main

リポジトリはプロジェクトのものです。アドレスが <組織>/<プロジェクト>/<リポジトリ> の 3 つの部分からなるのはそのためで、1 つのプロジェクトに複数のリポジトリを 置けます — アプリと API、フロントとワーカーのように。名前はプロジェクト内で 重ならなければ構いません。誰が読み書きできるかは組織のロールが決めます。

はじめる

1. 公開鍵を登録します

runlot key add
# ~/.ssh/id_ed25519.pub を登録しました (ssh-ed25519, SHA256:…)

引数なしで実行すると ~/.ssh から既定の鍵を探します。別の鍵を使うときは パスを指定してください: runlot key add ~/.ssh/work.pub

鍵そのものが身元になるため、同じ公開鍵を二人が登録することはできません。 登録済みの鍵を再度登録しようとすると拒否されます。

最初の接続でフィンガープリントを確認してください

ssh が表示するホストのフィンガープリントが以下と異なる場合は接続しないでください。

ed25519  SHA256:C7pTddRdCM1JuEbdi+73oBN+sNAZhb1H5t3CJSlyPj4
rsa      SHA256:+6PMLfTVpcjjLOVSWgiRI0nVQ5f9bVl0nuzcJ0EfTfE

2. リポジトリを作ります

runlot repo create app          # 既定は非公開です
runlot repo create app --public # 誰でも clone できます

runlot deployrunlot pg と同じ場所に作ります — カレントディレクトリの runlot.json が指すプロジェクトです。実行したディレクトリが Git リポジトリなら origin まで登録します。すでに origin がある場合は登録せず、コマンドだけを 表示します。

3. push します

git push -u origin main

HTTPS で接続する

SSH の代わりに HTTPS も使えます。トークンを 1 つ発行し、git がパスワードを 尋ねたらそこに入力してください(ユーザー名は何でも構いません)。

runlot token create laptop            # 読み書き
runlot token create ci --read-only    # clone のみ
git clone https://git.runlot.io/my-org/my-project/app.git

HTTPS と SSH はどちらも git.runlot.io で、SSH は通常の 22 番ポートです — ~/.ssh/config に書き足すものはありません。

トークンの値は発行時に一度だけ表示します。そのとき保管してください — あとから読み直すことはできません。失くしたら runlot token revoke <id> で 失効させ、新しく作ってください。

読み取り専用トークンでの push は理由とともに拒否します — リポジトリが無いように は見せません。

コマンド

コマンド内容
runlot repo create <名前> [ディレクトリ]リポジトリを作り origin を登録します (--public)
runlot repo listリポジトリ一覧 (--json)
runlot repo rename <旧> <新>名前を変更します (admin)
runlot repo visibility <名前> <public|private>公開範囲を変更します (admin)
runlot repo delete <名前>リポジトリを削除します (admin)
runlot repo history <名前>誰がどのブランチをどう動かしたか
runlot key add [パス] / runlot key list / runlot key rm <id>SSH 公開鍵
runlot token create <名前> / runlot token list / runlot token revoke <id>HTTPS 用トークン

runlot repo はプロジェクトを対象にします。プロジェクトのディレクトリ外で使う ときは --org--project の両方を指定してください。keytoken は ユーザーのものなので、どこからでも使えます。

誰が何をできるか

非公開リポジトリ公開リポジトリ
組織 admin読み・書き・設定読み・書き・設定
組織 member読み・書き読み・書き
組織 viewer読み読み
他の組織のユーザー読み
未ログイン読み

権限の変更は最大 10 秒で反映されます。公開鍵の削除とトークンの失効は即時 反映されます — 今すぐ止めたいときに使う機能だからです。

履歴

push は一行ずつ残ります。force-push で失ったコミットを探す手がかりが ここにあります。

runlot repo history app
# 2026-09-09T07:38:30Z	作成	refs/heads/main	ae4bb959

clone と fetch は記録しません。

できること・まだできないこと

できること: clonefetchpush、ブランチ、タグ、force-push、ブランチ削除。

まだ無いもの

  • shallow clone--depth 1)に対応していません。CI でよく使う書き方なので 不便かもしれません。
  • Pull Request、Issue、コードレビュー、CI はありません。リポジトリはリポジトリです。
  • push はデプロイを起動しません。 デプロイは runlot deploy です。
  • バックアップは同じマシンに置いています。誤って削除したリポジトリは戻せますが、 マシンごと失われる場合にはまだ備えていません。今の安全網は Git 自身です — 各開発者のマシンに完全なコピーがあります。

ウェブで見る

ダッシュボードでプロジェクトを開くとリポジトリタブがあります。リポジトリを作成し、 ブランチやタグを選び、ファイルツリー、ファイルの内容、コミット一覧、そして ref 履歴(誰がどのブランチをどう動かしたか)を見られます。管理者は設定タブで名前・ 既定ブランチ・公開範囲を変更し、リポジトリを削除できます。Clone ボタンが HTTPS と SSH のアドレスを示します。

画面には上限がそのまま出ます — 1 MiB を超えるファイルとバイナリファイルには プレビューがなく、ディレクトリの項目は 1,000 件までです。その場合は clone して 確認してください。

上限

項目超えたとき
リポジトリのサイズ1GiBpush を拒否します
1 回の push500MiBpush を拒否します
ファイル 1 つ100MiBpush を拒否します
既定ブランチの削除拒否します(元に戻せないため)

上限に触れると git push が理由をそのまま表示します。

よくある問題

Permission denied (publickey)runlot key list でその鍵が登録されて いるか確認してください。複数の鍵を使い分けている場合は、どれを使うかを 指定してください。

Host git.runlot.io
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

non-fast-forward (fetch first) — その間に誰かが push しています。 git pull --rebase のあとで push し直すか、本当に上書きするなら git push --force です。

以前の 2 つの部分からなるアドレスで push・clone すると — アドレスは 3 つの部分(<組織>/<プロジェクト>/<リポジトリ>)になりました。SSH は何を直せば よいかを教えます。HTTPS はリポジトリが見つからないと答えます。remote を指定し 直してください。

runlot repo list                # 現在のアドレスを確認します
git remote set-url origin [email protected]:my-org/my-project/my-app.git

リポジトリ名を変えた — 登録済みの remote も変更してください。

git remote set-url origin [email protected]:my-org/my-project/new-name.git

このページの目次