CLI
Every lvcs command and flag, as lvcs <command> --help prints it.
lvcs
Living Version Control System
Usage: lvcs [OPTIONS]
lvcs <COMMAND>
Commands:
daemon Run this user's LVCS daemon in the foreground
install Install the daemon as a service that starts at login, and start it
uninstall Stop the daemon and remove its service, leaving every project alone
join Join an existing project from its peers into a directory
init Make a directory an LVCS project that you own, hosted by the daemon
project Host an initialized project, or change how it is hosted
forget Stop hosting a project, leaving its files alone
key Manage participant keys
replay Check that the project's journal replays to the same state
audit Check that every stored change is signed and authorized, and that no secret is stored
migrate Bring a project's LVCS files to this version's format
genesis Print a document's canonical genesis change as one line of hex
status Show where you stand in this project, one line per item
explain Explain an error code, rule, recovery, or notification kind, or how a path is classified
fork Fork a new workspace from another
merge Merge a workspace back into its base
issue Create, list, view, edit, close, and work on issues, as gh's issue commands do
auth Pair devices such as the app in a browser, list them, and revoke them
notifications Read your notifications
answer Answer an open question asked of you
say Add a message to a thread
ask Ask other participants a question
hold Ask another participant to wait on the lines they announced
note Tell another participant something about the lines they announced, without objecting
hook Run one Claude Code hook: read its JSON on stdin and print its output, or nothing
mcp Serve LVCS as MCP tools on stdin and stdout
checkpoint Write a git commit of main's current state
approve Approve changes to protected paths at a frontier that passed its checks
run Run a gated action, such as a deploy, by hand, or list, view, and watch runs
grant Let a participant read, write, or more on some paths
revoke Take back a grant, and every renewal of it
update Update lvcs to the latest signed release and restart the daemon
help Print this message or the help of the given subcommand(s)
Options:
-V, --version Print `lvcs <version>`
--verbose With --version, also print the build's commit, target, profile, and features, one `<name>: <value>` line each
-h, --help Print help
lvcs daemon
Run this user's LVCS daemon in the foreground.
It hosts every project you initialized or joined, until SIGINT or SIGTERM. `lvcs install` runs it as a service instead.
Usage: lvcs daemon
Options:
-h, --help
Print help (see a summary with '-h')
lvcs install
Install the daemon as a service that starts at login, and start it.
A launchd agent on macOS, a systemd user unit on Linux, a Scheduled Task on Windows. Run again, it rewrites the service and restarts the daemon.
Usage: lvcs install
Options:
-h, --help
Print help (see a summary with '-h')
lvcs uninstall
Stop the daemon and remove its service, leaving every project alone
Usage: lvcs uninstall
Options:
-h, --help Print help
lvcs join
Join an existing project from its peers into a directory.
Prints your new participant id, the project id, and this peer's id. Exits 1 with "join incomplete" when no peer delivers every file in time; the daemon then finishes the sync.
Usage: lvcs join [OPTIONS] <PROJECT>
Arguments:
<PROJECT>
The project id (`ID_ENCODING`)
Options:
--root <ROOT>
The directory to join into, created when missing (default: the current directory)
--seed
Run as a seed peer: pin every document, serve as a circuit relay, and act as a bootstrap address, with no special authority
--listen <MULTIADDR>
A multiaddr to listen on (repeatable; default: every interface, a port the system picks, TCP and QUIC)
--bootstrap <MULTIADDR>
A multiaddr to dial at start, including its `/p2p/<PeerId>` (repeatable)
--no-mdns
Don't look for peers on the local network (mDNS); find them only through bootstrap addresses, the DHT, and relays
-h, --help
Print help (see a summary with '-h')
lvcs init
Make a directory an LVCS project that you own, hosted by the daemon.
Prints your owner id, the project id, and this peer's id.
Usage: lvcs init [OPTIONS]
Options:
--root <ROOT>
The project root (default: the current directory)
--seed
Run as a seed peer: pin every document, serve as a circuit relay, and act as a bootstrap address, with no special authority
--listen <MULTIADDR>
A multiaddr to listen on (repeatable; default: every interface, a port the system picks, TCP and QUIC)
--bootstrap <MULTIADDR>
A multiaddr to dial at start, including its `/p2p/<PeerId>` (repeatable)
--no-mdns
Don't look for peers on the local network (mDNS); find them only through bootstrap addresses, the DHT, and relays
-h, --help
Print help (see a summary with '-h')
lvcs project
Host an initialized project, or change how it is hosted.
Sets who authors changes made on disk and how the project reaches its peers, then opens it again. Prints the result as one line of JSON.
Usage: lvcs project [OPTIONS]
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The default participant, which authors changes made on disk in the project's mirror (default when registering: the owner); a forked workspace's mirror is authored by the participant that forked it
--seed
Run as a seed peer: pin every document, serve as a circuit relay, and act as a bootstrap address, with no special authority
--listen <MULTIADDR>
A multiaddr to listen on (repeatable; default: every interface, a port the system picks, TCP and QUIC)
--bootstrap <MULTIADDR>
A multiaddr to dial at start, including its `/p2p/<PeerId>` (repeatable)
--no-mdns
Don't look for peers on the local network (mDNS); find them only through bootstrap addresses, the DHT, and relays
--mdns
Find peers on the local network again after `--no-mdns`
-h, --help
Print help (see a summary with '-h')
lvcs forget
Stop hosting a project, leaving its files alone
Usage: lvcs forget [OPTIONS]
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
-h, --help Print help
lvcs key
Manage participant keys
Usage: lvcs key <COMMAND>
Commands:
new Create a participant key in the project through the daemon and print its participant id
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
lvcs key new
Create a participant key in the project through the daemon and print its participant id
Usage: lvcs key new [OPTIONS]
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
-h, --help Print help
lvcs replay
Check that the project's journal replays to the same state.
Outside any project, it checks the daemon's own journal.
Usage: lvcs replay [OPTIONS] --check
Options:
--check
Exit nonzero at the first entry whose replayed state differs
--root <ROOT>
The project root (default: the current directory)
-h, --help
Print help (see a summary with '-h')
lvcs audit
Check that every stored change is signed and authorized, and that no secret is stored.
Prints "audit ok" with the counts and exits 0, or prints the first violation and exits 1; exits 2 when the project can't be read.
Usage: lvcs audit [OPTIONS]
Options:
--root <ROOT>
The project root (default: the current directory)
-h, --help
Print help (see a summary with '-h')
lvcs migrate
Bring a project's LVCS files to this version's format.
Run it while the daemon doesn't hold the project open. Prints one line per file it changed, or that there is nothing to migrate; exits 1 when a file is from a newer lvcs or can't be migrated.
Usage: lvcs migrate [OPTIONS]
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
-h, --help
Print help (see a summary with '-h')
lvcs genesis
Print a document's canonical genesis change as one line of hex
Usage: lvcs genesis <KIND> <ADDRESS>
Arguments:
<KIND> The document kind (a `doc_kind` value)
<ADDRESS> The document address
Options:
-h, --help Print help
lvcs status
Show where you stand in this project, one line per item.
Outside any project, it lists every project the daemon hosts.
Usage: lvcs status [OPTIONS]
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to show (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs explain
Explain an error code, rule, recovery, or notification kind, or how a path is classified.
Works offline. With no value, lists every value it knows. Exits 2 when nothing matches.
Usage: lvcs explain [VALUE]
Arguments:
[VALUE]
The value to explain, matched case-insensitively; a code's number may be negative, as every one is
Options:
-h, --help
Print help (see a summary with '-h')
lvcs fork
Fork a new workspace from another.
Prints the result as one line of JSON.
Usage: lvcs fork [OPTIONS] --from <FROM> <NAME>
Arguments:
<NAME>
The new workspace's name
Options:
--from <FROM>
The workspace to fork from: `main`, or a workspace name or id
--subtree <SUBTREE>
Fork only the paths under this one
--dir <DIR>
The directory to mirror the workspace to (default: `.lvcs/ws/<name>/`)
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs merge
Merge a workspace back into its base.
Prints the result as one line of JSON.
Usage: lvcs merge [OPTIONS] <WORKSPACE>
Arguments:
<WORKSPACE>
The workspace to merge: its name or id
Options:
--into <INTO>
The workspace to merge into (default: the workspace's base)
--require-validated
Wait until checks pass on a preview of the merged state (refused until the runner exists)
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs issue
Create, list, view, edit, close, and work on issues, as gh's issue commands do.
Each prints its result as one line of JSON.
Usage: lvcs issue <COMMAND>
Commands:
create Create an issue, numbered `<your alias>/<n>`
list List issues, newest first, without their bodies
view Show one issue, its plan, linked work, and status
edit Change an issue's title, body, labels, assignees, plan, or links
close Close an issue by hand
reopen Open an issue closed by hand again
checkpoint Record where the work on an issue stands: what is done, next, and blocked
develop Start work on an issue in its own workspace; merging it into main links the work to the issue
help Print this message or the help of the given subcommand(s)
Options:
-h, --help
Print help (see a summary with '-h')
lvcs issue create
Create an issue, numbered `<your alias>/<n>`
Usage: lvcs issue create [OPTIONS] --title <TITLE>
Options:
-t, --title <TITLE> The title
-b, --body <BODY> The body
-F, --body-file <FILE> Read the body from a file (`-` reads standard input)
-l, --label <LABEL> A label (repeatable)
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs issue list
List issues, newest first, without their bodies
Usage: lvcs issue list [OPTIONS]
Options:
-s, --state <STATE> `open` (default), `closed`, or `all` [default: open] [possible values: open, closed, all]
-a, --assignee <ASSIGNEE> Only issues assigned to this participant (`@me`, an alias, or an id)
-l, --label <LABEL> Only issues with this label
--sort <SORT> `newest` (default), `oldest`, or `severity` (by the `sev:critical`, `sev:high`, `sev:medium`, and `sev:low` labels, then newest) [default: newest] [possible values: newest, oldest, severity]
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs issue view
Show one issue, its plan, linked work, and status
Usage: lvcs issue view [OPTIONS] <ISSUE>
Arguments:
<ISSUE> The issue, `<alias>/<n>`
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs issue edit
Change an issue's title, body, labels, assignees, plan, or links.
`--add-assignee @me` on an assigned issue asks its assignees first, and waits for their answer.
Usage: lvcs issue edit [OPTIONS] <ISSUE>
Arguments:
<ISSUE>
The issue, `<alias>/<n>`
Options:
-t, --title <TITLE>
A new title
-b, --body <BODY>
A new body
-F, --body-file <FILE>
Read the new body from a file (`-` reads standard input)
--add-label <ADD_LABEL>
Add a label (repeatable)
--remove-label <REMOVE_LABEL>
Remove a label (repeatable)
--add-assignee <ADD_ASSIGNEE>
Assign `@me`, an alias, or an id (repeatable); anyone but yourself needs the assign grant
--remove-assignee <REMOVE_ASSIGNEE>
Unassign `@me`, an alias, or an id (repeatable)
--task <N>
Apply `--add-assignee`/`--remove-assignee` to plan task `n` instead of the issue
--add-task <TEXT>
Append a plan task (repeatable)
--check <N>
Check plan task `n` (repeatable)
--uncheck <N>
Uncheck plan task `n` (repeatable)
--link <FILE:LINES>
Link a range, `<file>:<lines>` (`src/a.rs:L3-L9`) or a whole file (repeatable)
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs issue close
Close an issue by hand.
A fixed issue closes by itself once its linked work is done.
Usage: lvcs issue close [OPTIONS] <ISSUE>
Arguments:
<ISSUE>
The issue, `<alias>/<n>`
Options:
-r, --reason <REASON>
`wontfix` (default) or `duplicate`
[possible values: wontfix, duplicate]
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs issue reopen
Open an issue closed by hand again
Usage: lvcs issue reopen [OPTIONS] <ISSUE>
Arguments:
<ISSUE> The issue, `<alias>/<n>`
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs issue checkpoint
Record where the work on an issue stands: what is done, next, and blocked
Usage: lvcs issue checkpoint [OPTIONS] <ISSUE>
Arguments:
<ISSUE> The issue, `<alias>/<n>`
Options:
--done <DONE> What is done (repeatable)
--next <NEXT> What comes next (repeatable)
--blocker <BLOCKER> What blocks the work (repeatable)
--question <QUESTION> An open question (repeatable)
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs issue develop
Start work on an issue in its own workspace; merging it into main links the work to the issue
Usage: lvcs issue develop [OPTIONS] <ISSUE>
Arguments:
<ISSUE> The issue, `<alias>/<n>`
Options:
-n, --name <NAME> The workspace's name (default: `issue-<alias>-<n>`)
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs auth
Pair devices such as the app in a browser, list them, and revoke them
Usage: lvcs auth <COMMAND>
Commands:
login Pair a device (the app in a browser or on a phone): print a one-time link to open on it, wait for it to claim the pairing, and pair it once you confirm it shows the same code as the terminal. Prints `lvcs auth login device=<key> name=<alias> grant=<grant id>`
status List the devices you paired, one line each
logout Revoke a paired device by its alias or key; prints the revocation as one line of JSON
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
lvcs auth login
Pair a device (the app in a browser or on a phone): print a one-time link to open on it, wait for it to claim the pairing, and pair it once you confirm it shows the same code as the terminal. Prints `lvcs auth login device=<key> name=<alias> grant=<grant id>`
Usage: lvcs auth login [OPTIONS]
Options:
--alias <NAME> The device's alias, which is permanent and never given to another. Without it you are asked for one, defaulting to the device's own name and a number (taken as is when stdin is not a terminal)
--write Let the device coordinate too: ask, answer, hold, say, and run gated actions. It never edits files
--read <GLOB> A path pattern the device may read (gitignore syntax); every path when none is given
--no-browser Print the link without opening a browser
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs auth status
List the devices you paired, one line each
Usage: lvcs auth status [OPTIONS]
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs auth logout
Revoke a paired device by its alias or key; prints the revocation as one line of JSON
Usage: lvcs auth logout [OPTIONS] <DEVICE>
Arguments:
<DEVICE> The device's alias, or its key or a prefix of it
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs notifications
Read your notifications
Usage: lvcs notifications <COMMAND>
Commands:
read Show the notifications named, as one line of JSON, and mark them read
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
lvcs notifications read
Show the notifications named, as one line of JSON, and mark them read.
Name each by its id, or by a file's path for every open and unread one about that file; with none, every open and unread one. Open questions and holds come first.
Usage: lvcs notifications read [OPTIONS] [TARGETS]...
Arguments:
[TARGETS]...
Notification ids, from a hook's hint or `notifications`, and paths below the project root (`./<name>` forces a path)
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs answer
Answer an open question asked of you.
Prints the result as one line of JSON.
Usage: lvcs answer [OPTIONS] <ASK> <TEXT>
Arguments:
<ASK>
The ask's id, from a hook's hint or `notifications`
<TEXT>
The answer
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs say
Add a message to a thread.
Prints the result as one line of JSON.
Usage: lvcs say [OPTIONS] <THREAD> <TEXT>
Arguments:
<THREAD>
The thread's address, `.lvcs/threads/<id>`
<TEXT>
The message
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs ask
Ask other participants a question.
Prints the result as one line of JSON. The question can be about a file or addressed to participants, and stays open until answered.
Usage: lvcs ask [OPTIONS] <TEXT>
Arguments:
<TEXT>
The question
Options:
--to <PARTICIPANT>
A participant the answer is expected from (repeatable; default: anyone subscribed)
--address <PATH>
The file the question is about, a path below the project root
--thread <THREAD>
The thread to ask in, instead of a new one
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs hold
Ask another participant to wait on the lines they announced.
Prints the result as one line of JSON. Opens a thread with the participant who announced them.
Usage: lvcs hold [OPTIONS] <NOTIFICATION> <TEXT>
Arguments:
<NOTIFICATION>
The announcement's id
<TEXT>
Why its sender should wait
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs note
Tell another participant something about the lines they announced, without objecting.
Prints the result as one line of JSON.
Usage: lvcs note [OPTIONS] <NOTIFICATION> <TEXT>
Arguments:
<NOTIFICATION>
The announcement's id
<TEXT>
What to tell its sender
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs hook
Run one Claude Code hook: read its JSON on stdin and print its output, or nothing.
Always exits 0.
Usage: lvcs hook [OPTIONS] <EVENT>
Arguments:
<EVENT>
The hook event
[possible values: SessionStart, PreToolUse, PostToolUse, UserPromptSubmit, Stop]
Options:
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`; never the owner; with neither the hook does nothing)
--root <ROOT>
The project root (default: `CLAUDE_PROJECT_DIR`, else the nearest ancestor of the working directory holding `.lvcs/`)
-h, --help
Print help (see a summary with '-h')
lvcs mcp
Serve LVCS as MCP tools on stdin and stdout
Usage: lvcs mcp [OPTIONS]
Options:
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`; never the owner)
--root <ROOT> The project root (default: the current directory)
-h, --help Print help
lvcs checkpoint
Write a git commit of main's current state.
Prints the result as one line of JSON. The commit is at refs/lvcs/checkpoints/main.
Usage: lvcs checkpoint [OPTIONS]
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs approve
Approve changes to protected paths at a frontier that passed its checks.
Prints the result as one line of JSON.
Usage: lvcs approve [OPTIONS] <FRONTIER> <PATHS>...
Arguments:
<FRONTIER>
The frontier id, as `lvcs status` names it on a `waiting` line
<PATHS>...
The protected paths approved
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs run
Run a gated action, such as a deploy, by hand, or list, view, and watch runs.
`lvcs run <action> [<frontier-id>]` prints the result as one line of JSON.
Usage: lvcs run [OPTIONS] [ACTION] [FRONTIER]
lvcs run <COMMAND>
Commands:
list List recent runs, newest first, one line each
view Show a run's steps, each with its state, exit status, and time
watch Follow a run until it ends: exits 0 when it passed (or was reused), else 1
help Print this message or the help of the given subcommand(s)
Arguments:
[ACTION]
The gated action's name, which is its channel's
[FRONTIER]
The frontier to run it on (default: the one its `after` channel holds)
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs run list
List recent runs, newest first, one line each
Usage: lvcs run list [OPTIONS]
Options:
--action <ACTION> Only this action's runs
--limit <LIMIT> At most this many runs (default: 20) [default: 20]
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs run view
Show a run's steps, each with its state, exit status, and time
Usage: lvcs run view [OPTIONS] <RUN>
Arguments:
<RUN> The run's id, or its unique start, as `lvcs run list` shows it
Options:
--log Also print each step's last lines of output
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs run watch
Follow a run until it ends: exits 0 when it passed (or was reused), else 1
Usage: lvcs run watch [OPTIONS] <RUN>
Arguments:
<RUN> The run's id, or its unique start, as `lvcs run list` shows it
Options:
--root <ROOT> The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT> The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help Print help
lvcs grant
Let a participant read, write, or more on some paths.
Prints the grant as one line of JSON. `lvcs revoke` takes it back.
Usage: lvcs grant [OPTIONS] <GRANTEE> <CAPABILITIES>...
Arguments:
<GRANTEE>
The participant: its id, alias, or a prefix of its id, as `lvcs status` and `lvcs key new` show it
<CAPABILITIES>...
What it may do: read, write, message, approve, delegate, or attest:<channel>
Options:
--paths <PATHS>
A path pattern it applies to (gitignore syntax, repeatable); every path when none is given
--alias <ALIAS>
The name it is shown by, which stays its for the life of the project
--ttl <TTL>
How long each window of the grant lasts, such as 900, 15m, 2h, or 1d (at least 10 s; default: no expiry). Your daemon renews it every half window while it runs, so a peer that is offline when you revoke the grant stops honouring it at most one window after it last synced; without one, such a peer honours it until it syncs
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs revoke
Take back a grant, and every renewal of it.
Prints the result as one line of JSON.
Usage: lvcs revoke [OPTIONS] <GRANT>
Arguments:
<GRANT>
The grant: its id, from `grant`'s result, or the start of one; or the participant holding it: its id, alias, or a prefix of its id
Options:
--root <ROOT>
The project root (default: the nearest ancestor of the current directory holding `.lvcs/`)
--as <PARTICIPANT>
The participant to act as (default: `LVCS_PARTICIPANT`, else the one key bound to this OS user, else, as the daemon's own user, the owner)
-h, --help
Print help (see a summary with '-h')
lvcs update
Update lvcs to the latest signed release and restart the daemon.
Keeps the old binary as lvcs.prev. The daemon also checks daily and, with auto-update on (the default), updates itself.
Usage: lvcs update [OPTIONS]
Options:
--check
Only say whether a release is available; change nothing
--auto <on|off>
Turn auto-update on, or off (the daemon then only notifies)
Possible values:
- on: Auto-update on
- off: Auto-update off: notify only
--rollback
Put back the binary the last update replaced, and hold the version rolled back from until the next `lvcs update`
-h, --help
Print help (see a summary with '-h')