Your docs, alive in the browser

Documentation thatlives with your code

Write documentation in Obsidian desktop, push to GitHub, and browse it rendered in the browser — with full support for wikilinks, callouts, diagrams, math, and code annotations.

See how it works
my-project / src / lib / auth / session.ts
Docs3
Source
Important

Session tokens are encrypted with AES-256-GCM before storage. The encryption key is derived from SESSION_SECRET via HKDF.

This module manages authenticated GitHub sessions using encrypted HTTP-only cookies. See [[CONTRIBUTING#Auth Flow]] for the full sequence diagram.
typescriptL42–58
42export async function getSession(req: Request) {
43  const cookie = req.headers.get("cookie");
44  if (!cookie) return null;
45
46  const encrypted = parseCookie(cookie);
47  return await decrypt(encrypted, key);
48}

Workflow

Write, push, browse

A seamless pipeline from your local editor to the browser.

Step 1

Write in Obsidian

Open the .obsidian directory in Obsidian desktop. Edit with graph view, canvas, templates, and plugins.

Step 2

Push to GitHub

Documentation lives in git alongside your code. Review changes in pull requests.

Step 3

Browse in Gitian

Rendered wikilinks, callouts, diagrams, and math — accessible from any browser.

Features

Everything Obsidian, in the browser

Full rendering support for the Obsidian extensions you rely on, served directly from your GitHub repos.

Wikilinks

Navigate between documents with [[wikilinks]] and [[page|aliases]], resolved across your vault hierarchy.

Callouts

All Obsidian callout types rendered with proper icons, colors, and nesting: note, tip, warning, danger, and more.

Mermaid Diagrams

Flowcharts, sequence diagrams, and ERDs render inline. No copy-pasting into external tools.

f(x)

KaTeX Math

Inline and block math expressions render beautifully with full LaTeX support via KaTeX.

Code Annotations

Tag functions with @gitian for IDE-style docs, or mark items with @todo to track work inline.

Open in Obsidian

Every .obsidian directory is a real vault. Open it in Obsidian desktop for graph view, canvas, backlinks, and the full plugin ecosystem.

How It Works

File-doc associations

Documentation for source files lives inside .obsidian/ directories as markdown companions. Gitian automatically discovers and pairs them.

my-project/
src/
lib/
auth.ts
utils.ts
.obsidian/vault
components/
Button.tsx
.obsidian/root vault
README.md
1

Vault Discovery

Gitian scans your repository for .obsidian/ directories to locate documentation vaults. Multiple vaults at different depths are fully supported.

Source

auth.ts

paired

Docs

.obsidian/auth.ts.md

2

Name-based Pairing

Source files are automatically paired with their markdown companion inside the nearest .obsidian/ directory by matching filenames.

my-project/
.obsidian/root scope
README.md
config.ts
src/
.obsidian/nested scope
auth.ts
utils.ts
3

Scoped Vaults

Nested vaults scope documentation to their subtree. A root vault covers the whole repo while nested vaults override within their directory.

# auth.ts

Handles user authentication via OAuth2. Manages token refresh, session storage, and logout flows.

export function authenticate(provider: string) { ... }
4

Tabbed Result

Files with a documentation companion render a tabbed UI — a Docs tab with the rendered markdown and a Source tab with syntax-highlighted code.

Annotations

Document code inline

Add @gitian comments to generate IDE-style annotated blocks, or use @todo to track work items inline — rendered as a collapsible checklist.

examples/demo.ts2 annotations1 todo
1// @gitian Validates user input before processing.
2// Throws on invalid email format.
3export function validateUser(input: UserInput) {
4  if (!input.email.includes("@")) {
5    throw new Error("Invalid email");
6  }
7
8  // @todo Add rate limiting per IP
9  return { ...input, validated: true };
10}
@gitian captures function bodies — @todo tracks work items in a collapsible list

See It In Action

Explore the demo

Browse a sample repository with multiple vaults, wikilinks, callouts, code annotations, and more — no sign-in required.

Your documentation deserves better

Write in Obsidian, push to GitHub, browse in Gitian. Connect your repos and start in seconds. Free and open source.