# otisk

A small, self-hosted git forge.

*otisk* is Czech for **imprint**, as in a fingerprint — which is how git names
everything it stores, and how otisk recognises you.

The object store is the source of truth for every repository. Local disk is a
cache that can be deleted at any time; a repository reaches disk only by being
hydrated from durable storage, so a cold node is a routine state rather than a
recovery path.

There is no web interface. Everything is driven from the command line over
SSH, using the same key you already push with — there is nothing to log into.

## Start here

- **[Concepts](concepts.md)** — how this differs from GitHub and GitLab, and
  what it borrows from Gerrit. Read this one first.
- **[Installing](installing.md)** — `pacman -S otisk`, `brew install otisk`,
  or building from a clone.
- **[Getting started](getting-started.md)** — point the client at a host,
  create a repository, push to it, clone it back.

## Using it

- **[Reviewing](reviewing.md)** — changes, revisions, comments, landing, and
  the terminal interface.
- **[Commands](commands.md)** — every command, and what it takes.
- **[Configuring](configuring.md)** — the client's settings, and the
  gateway's.

## Running it

- **[Self-hosting](self-hosting.md)** — running a gateway of your own.
- **[How it works](how-it-works.md)** — what happens when you push, and where
  it ends up.

## Reading this as an agent

Every page is published twice: as HTML, and as the Markdown it was rendered
from. Add `.md` to any address to get the text.

```
https://docs.otisk.dev/commands      the page
https://docs.otisk.dev/commands.md   the same file, as Markdown
```

They are the same file, not a copy of one — the build serves the repository's
`docs/` directory, and a test compares what is served with what is committed.
If you have the repository, read `docs/` directly.

## What this is not

No CI, packages, pages, wikis, project boards, discussions, organizations,
branch protection, merge queues, or code search. Issues, HTTPS transport, LFS,
webhooks, and a web interface are planned; each will arrive on its own terms.
