Skip to content
Copied!
published on 2026-07-18

コマンドリファレンス

構文

rigo [-f <path>] <command> [flags] [<path>]

グローバルフラグ

フラグ説明
-f, --file <path>Vault内の rigo.toml を直接指定します。初回ブートストラップ用で,通常は ~/.config/rigo/rigo.toml のsymlinkからVaultが自動発見されます
-v, --versionバージョンを表示します
-h, --helpヘルプを表示します

パス引数

<path> を取るコマンドは,論理パス(ホーム相対・スラッシュ区切り。例 .zshrc.config/git/config)と実パス~/.zshrc や絶対パス)のどちらでも同じエントリに解決します。~/ はシェルが展開しなくてもRigo側で展開されます。

終了コード

エラー時は標準エラー出力に rigo: <message> を出力して終了コード1で終わります。例外は diff で,差分があるときはメッセージなしの終了コード1です(diff(1) と同じ流儀)。

対話と非対話

conflict解決などの対話は,標準入力が端末(TTY)のときだけ行われます。スクリプトなど非対話の文脈では,対話が必要な操作は「どのフラグで代替できるか」を示すエラーになります(各コマンドの節を参照)。

status

rigo status [<path>]

管理対象エントリの状態を表示します。引数を与えると,そのエントリだけ表示します。

host: mymac (mode: exclude)

linked    .config/rigo/rigo.toml
linked    .zshrc
pending   .config/git/config
excluded  .vim/

ヘッダはこのマシンのホスト名と選択モード(exclude = blacklist / include = allowlist)です。状態の意味は仕組みを参照してください。

apply

rigo apply

選択されたすべてのエントリを収束させます。

  • pending(未展開)と unlinked(実体だが内容同一)→ リンクします。unlinkedはVaultと同一の内容なので,失われるものはありません
  • conflict → 一覧表示するだけで触りません(rigo link <path> で解決)
  • broken → 一覧表示するだけで触りません(rigo clean で掃除)
  • excluded → 件数だけ数えます
  • 個別エントリの失敗(ドライブ未接続など)はそのエントリだけ記録し,残りの収束は続行します
linked    .config/git/config
conflict  .zshrc  (resolve with "rigo link .zshrc")

1 linked, 1 conflict, 0 broken, 0 failed, 0 excluded

失敗(failed)が1件以上あると終了コード1になります。conflictやbrokenの残存はエラー扱いにしません。

rigo link [--force] <path>

1エントリをVaultからリンクします。状態ごとの動作は次のとおりです。

状態動作
linkedなにもしません(その旨を表示)
pending / unlinkedリンクします
brokenリンク先を表示したうえで張り替えます
conflict対話で解決します(下記)

conflictの解決

ローカルとVaultのファイル情報とdiff統計(テキストなら +12 -3,バイナリなら binary files differ,ディレクトリ単位なら 2 added, 1 removed, 3 changed (local vs vault))を表示します。diffが40行以内ならそのまま表示され,超える場合は選択肢に d) が加わります。

conflict: .zshrc
  vault: 1234 B, modified 2026-07-18 10:00:12
  local: 987 B, modified 2026-07-01 08:15:44
  +12 -3

  1) take the vault version (local content is replaced)
  2) adopt the local content into the vault, then link
  3) abort
choice:
  • 1
    Vault側を採用します。ローカルの内容は置き換えられます
  • 2
    ローカルの内容をVaultへ取り込んで(adopt),それからリンクします
  • 3
    なにもせず中断します

--force は選択肢1(Vault側を採用)の非対話版です。非TTYで --force なしのconflictはエラーになります。

リンク作成は常に安全側です。既存の内容を退避してからsymlinkを張り,失敗したら元に戻します。

rigo unlink <path>

linked なエントリを実体化します。symlinkがVault内容の実コピーに置き換わり,Vault側の実体は保持され,管理は継続します(status では unlinked になります)。ローカルで一時的に実験したいときに使い,戻すときは rigo link します。

linked 以外の状態では,現在の状態と次にとるべき操作を示すエラーになります。

add

rigo add [flags] <path>

実パス <path> の実体をVaultへ移動し,元の場所へsymlinkを張り戻します。移動とリンクは失敗時にロールバックされます(内容が宙に浮くことはありません)。

フラグ説明
--osエントリをOS別レイヤー(.os/<goos>/)に置きます
--dirディレクトリを1本のsymlinkとして展開します(rigo.tomldirs に自動記録)
--filesディレクトリ単位ではなく,中のファイルを個別に移動・リンクします
--tag <name>エントリを指定タグのメンバーとして rigo.toml に記録します
--keep-symlink<path> 自身がsymlinkのとき,参照先を取り込まずsymlinkのままVaultに保存します
--volume <name>Windowsの非システムドライブ上のパスに使う名前付きボリュームを指定します

ディレクトリの扱い

--dir--files は排他です。どちらも付けずにディレクトリを add すると対話で選択します(非TTYではフラグの指定を求めるエラー)。

--files ではディレクトリ自体は実体のまま残り,中の各ファイルが個別エントリになります。ignoreパターンに一致するファイルはスキップされます。--tag を併用すると,移動した各ファイルがタグのメンバーとして記録されます。

symlinkをaddする場合

<path> がsymlinkのときは,既定では参照先の内容をVaultに取り込みます(コピー。参照先自体は元の場所に残ります)。symlinkそのものを構成として保存したい場合は --keep-symlink を使います。

ホーム外・Windowsのパス

ホーム外の絶対パスは自動的にOS別レイヤーの .abs/ 配下に置かれます。Windowsでは %APPDATA% / %LOCALAPPDATA% 配下が .appdata/ / .local/ セクションに,非システムドライブのパスが名前付きボリューム経由になります。非システムドライブでは --volume の指定,または対話でのボリューム名選択が必要で,未宣言のボリュームは rigo.toml[volumes] に自動で宣言されます。

volume name for drive D: [data]:
declared volume data = "d" in rigo.toml

拒否される場合

安全のため,次の add はエラーになります。

  • Vault内部のパス
  • すでに管理されているエントリ,またはディレクトリ単位エントリの内側
  • ignoreパターンに一致するパス(管理しても見えなくなるため)
  • Vault側に同じパスの実体がすでに存在する場合

forget

rigo forget <path>

エントリの管理をやめます。ローカルにリンクが張られていれば実体化し(実コピーが手元に残る),Vault側の実体はトラッシュへ移動し,rigo.toml 内の参照(dirs / tags / include / exclude)は自動で取り除かれます。

forgot .vim/ (vault copy moved to .trash/20260718T093000Z/.vim)
removed 2 reference(s) from rigo.toml
  • ローカルの実体(unlinked / conflict 状態の実ファイル)が上書きされることはありません
  • このホストで excluded のエントリにも実行できます(Vaultレベルの操作のため。ローカルの実体化だけ行われません)
  • rigo.toml 自身を forget することはできません

他のマシンには,同期後にリンク切れのsymlinkが残ります。それらは各マシンで rigo clean が片付けます。

diff

rigo diff [<path>]

ローカル実体とVaultの差分を表示する読み取り専用コマンドです。なにも変更しません。

  • 引数なし
    全エントリのうち conflict のものすべてのdiffを表示します
  • 引数あり
    そのエントリのdiff,またはconflictでない場合は状態の説明を表示します

差分が表示された場合の終了コードは1です(diff(1) と同じ流儀。CIやスクリプトでのドリフト検知に使えます)。

clean

rigo clean

壊れたsymlinkを対話的に片付けます。対象は次の2種類です。

  • スキャンで broken と判定されたエントリ
  • 他のマシンでの forget が同期されてできたリンク切れ(トラッシュの記録から発見。Vault内を指すsymlinkだけが対象で,無関係なリンク切れは触りません)

各リンクについて選択肢が出ます。トラッシュにコピーが残っている場合は復元も選べます。

broken: .vimrc (pointed to /Users/ada/Sync/Vault/.vimrc)
  r) restore the trash copy (20260718T093000Z) as a real file
  d) delete the symlink
  s) skip
choice:
  • r
    トラッシュのコピーを実ファイルとして復元します(トラッシュのコピーは他のマシンのために残ります)
  • d
    symlinkを削除します(実体を削除することはありません)
  • s
    なにもしません

非TTYでは一覧表示のみ行います。

tag

rigo tag show <name>
rigo tag link [--force] <name>
rigo tag unlink <name>

rigo.toml[tags] で定義したグループへの一括操作です。

  • show
    メンバーと状態を一覧します。Vaultに実体のないメンバーは missing と表示されます
  • link
    全メンバーをリンクします。conflictは対話(または --force)で解決し,非TTYで --force がない場合はスキップして報告します。excluded のメンバーは触りません
  • unlink
    linked なメンバーをすべて実体化します。それ以外の状態は (left alone) として報告されます

いずれも末尾に集計行が出ます。

1 linked, 2 already linked, 0 conflict, 1 excluded, 0 missing

trash

rigo trash ls
rigo trash restore <path>
rigo trash empty [--force] [--older-than <age>]

forget の安全網であるVault内トラッシュの操作です。

trash ls

世代を新しい順に一覧します。このホストに展開されないエントリ(他OSのレイヤーなど)は (not deployed on this host) 付きで表示されます。

2026-07-18 18:30:00  .vim
2026-07-16 09:12:33  .os/windows/.appdata/foo.ini  (not deployed on this host)

trash restore <path>

指定パスの最も新しい世代をVaultへ戻します(forget のundo)。forgetrigo.toml から取り除いた参照(dirs / tags / include / exclude)は復元されないため,必要なら書き直します。展開し直すには rigo applyrigo link を実行します。

trash empty

世代を完全削除します。トラッシュは全マシン共通の安全網なので,既定では確認プロンプトが出ます。

フラグ説明
--force確認プロンプトを省略します(非TTYでは必須)
--older-than <age>指定より古い世代だけ削除します。30d72h のように日(d)またはGoのduration表記で指定します

secrets

rigo secrets apply  [<path>]
rigo secrets status [<path>]
rigo secrets remove [<path>]

rigo.toml[secrets] に宣言した参照を,パスワードマネージャーから取得してターゲットパスに書き出します。対象はOSフィルタ(os キー)とマシンごとの選択を通過したエントリで,引数でひとつに絞れます。バックエンドは現在1Password(op:// 参照,要 op CLI)です。

secrets apply

各secretを取得してターゲットへ書き出します(既存ファイルは上書き)。親ディレクトリは 0700 で作成し,ファイルは宣言されたモード(既定 0600)で,一時ファイル経由のアトミック書き込みにより中断しても部分的なsecretが残らないようにします。1Password側の認証プロンプト(Touch IDなど)はそのまま表示されます。

secrets status

各secretのターゲットについて applied / missing を表示します。判定はファイルの存在のみです。ハッシュや鮮度の照合は設計上行いません(正は常にバックエンド側にあり,更新後は apply を再実行します)。

secrets remove

書き出したファイルを削除します(apply の逆操作。マシンの手放し時など)。存在しないファイルはエラーになりません。SSDでは完全消去(secure erase)は保証されない旨の注意が表示されます。