Commands

A path is owner/name, or just name for your own. Add --json to any command for structured output.

Anywhere

otisk whoami                              show the authenticated account
otisk status                              what the host is running
otisk version                             what this client is
otisk help                                the host's own list of commands

otisk repo list                           repositories you can read
otisk repo show <path>                    details of one repository
otisk repo create <path> [--public]       create one (private by default)
otisk repo rename <path> <new-name>       rename, keeping its identity and data
otisk repo transfer <path> <new-owner>    move it to another account
otisk repo visibility <path> <public|private>
otisk repo delete <path> --yes            delete it and release its data

otisk key list                            your registered SSH keys
otisk key add [<key>]                     register a key, or read one from stdin
otisk key remove <fingerprint>            revoke a key

otisk clone <path> [directory]            clone by owner/name
otisk host [set <host>]                   show or set the configured host
otisk ui [--repo <path>] [--all]          review in a terminal interface

Inside a clone

For changes under review. The repository and remote come from the git remote pointing at the configured host; --repo and --remote override them.

otisk change hook                         add a Change-Id to new commits
otisk change push [--branch <branch>]     push HEAD for review
otisk change list [--all]                 open changes, or every change
otisk change show <number>                a change and its revisions
otisk change diff <number> [<a> <b>]      range-diff two revisions (latest two by default)
otisk change checkout <number>            check out the latest revision, to amend it
otisk change land <number> [--revision=<n>]
                                          fast-forward the branch to the latest revision
otisk change abandon <number>             close a change without landing it

otisk change comments <number> [--all]    comment threads: open ones, or every one
otisk change comment <number> [--file <path> --line <n>] [--revision <n>] [-m <text>]
                                          start a thread; the text may also be piped in
otisk change reply <number> <thread> [-m <text>]
otisk change resolve <number> <thread>    mark a thread dealt with
otisk change reopen <number> <thread>

Without the client

Every command is an ssh exec request you can type by hand, and pushing for review is plain git:

ssh git@git.otisk.dev otisk repo list
ssh git@git.otisk.dev otisk change list yuritomanek/notes
git push origin HEAD:refs/for/main

otisk help, run against a host, prints that host's own list — which is the one that cannot be out of date. A test compares it against this page, so if they ever disagree, a build fails rather than a reader.