TIT(1)

NAME
tit - run a small self-hosted collaborative development environment

SYNOPSIS
tit [OPTIONS] COMMAND

DESCRIPTION
tit runs one HTTP server, one SSH server, Git transport, collaboration workflows, backup, restore, and diagnostics in one executable. It does not require a Git executable at run time.

OPTIONS

--config FILE
    Read configuration from FILE.

--user
    Read configuration from the XDG data directory.

--public-url URL
    Override the canonical public URL.

--http-listen ADDRESS
    Override the HTTP listener address.

--ssh-listen ADDRESS
    Override the SSH listener address.

--ssh-public-host HOST
    Override the advertised SSH hostname.

--ssh-public-port PORT
    Override the public SSH port.

-h, --help
    Print help.

-V, --version
    Print the version.

COMMANDS

serve
    Start the HTTP and SSH servers.

invite-code
    Create a single-use signup invitation.

doctor
    Check the instance without changing it. Use --backup FILE to also check a backup.

inspect
    Show an account, repository, or Git operation intent as JSON.

dump
    Write all SQLite rows as deterministic JSON Lines.

repair
    Run an explicit intent or quarantine repair operation.

maintenance
    Remove terminal workflow records that are older than the retention period, then compact SQLite. The default retention period is 365 days. Use --retention-days DAYS to set another period.

backup FILE
    Create an owner-only backup archive.

restore ARCHIVEDIRECTORY
    Restore an archive to an empty private directory.

setup
    Create the initial administrator.

admin
    Run an offline account, repository, or audit command.

SSH INTERFACE
Run ssh -p 2222 tit.example help to show the commands that the built-in SSH server accepts. An invalid command returns a nonzero status and tells the user to run help.

The SSH server accepts these collaboration commands:

auth ONE-TIME-SECRET
repo create NAME [--output human|json]
issue list OWNER/REPOSITORY [--output human|json]
issue create OWNER/REPOSITORY [--output human|json]
issue comment OWNER/REPOSITORY NUMBER [--output human|json]
issue close OWNER/REPOSITORY NUMBER [--output human|json]
issue reopen OWNER/REPOSITORY NUMBER [--output human|json]
pr list OWNER/REPOSITORY [--state open|closed|merged|all] [--output human|json]
pr create OWNER/REPOSITORY BASE HEAD [--output human|json]
pr close OWNER/REPOSITORY NUMBER [--output human|json]
pr reopen OWNER/REPOSITORY NUMBER [--output human|json]
pr checkout OWNER/REPOSITORY NUMBER [--output human|json]

WEB INTERFACE
The Web interface does not require JavaScript. It provides account SSH key management, repository settings, issues, pull requests, watched repository activity, RSS feeds, and public profiles. Commit and pull-request revision pages provide patch downloads that work with git apply. Repository owners can rename and unarchive repositories.

FILES

/srv/tit/config.toml
    Default system configuration.

/srv/tit/tit.sqlite3
    SQLite metadata database.

/srv/tit/repositories
    Bare Git repositories.

/srv/tit/ssh_host_ed25519_key
    Built-in SSH server host key.

SECURITY
The instance directory and configuration must have owner-only permissions. Backups contain credentials. Store them as secrets.

SEE ALSO
The release package contains the README, example service files, shell completions, and this manual page.