Skip to content
Zero

The code viewer for the agentic era.

Browse files and review what agents change: diffs, commits, branches, and the walkthroughs agents publish. Read-only and lean. Local, or a remote box served to your laptop.

curl -fsSL https://raw.githubusercontent.com/flexdinesh/zero/main/scripts/install.sh | sh

If zero is taken, confirm zero-cli in your terminal or choose --name. Install details

zero ~/code/apisynthetic demo
routes.ts· step 1 of 4session.tsREADME.md
src/routes.tsagent/session-expiry+3−2Viewed
4141 export function route(app) {
42- app.get("/orders", checkExpiry, orders)
43- app.get("/billing", billing)
42+ app.use(requireFreshSession)
43+ app.get("/orders", orders)
44+ app.get("/billing", billing)
4445 }

1Session expiry fix · step 1 of 4

The agent moved the expiry check into one middleware, so every route shares it. /billing was unprotected before.

4546
4647 export function health(app) {
4748 app.get("/health", ok)
4849 }
agent/session-expiry → main3 commits · 4 filesread-only

browse

Browse any file.

Every file in a folder, one command away. Markdown and images render, JSON and YAML format on demand, and everything else opens as highlighted source. Search names and content; go to definition through your language servers.

$ zero .
Browsing
zero ~/code/apisynthetic demo
README.mdconfig.yamllogo.pngPreviewSource

Explorer

api
docs
internal
config.yaml
logo.png
README.md
server.go

api

Routes requests to handlers. Start the server, then open the dashboard.

requestrouterhandler
server:
  port: 8080
  timeout: 30s
Markdown2.1 KB

diffs

Review like a pull request.

Uncommitted work, commits, branches against any base, and commit ranges in one stacked diff, with line counts and Viewed marks. Changes refresh live while an agent works.

Source Control
zero ~/code/api · source controlsynthetic demo

Base: main

Uncommitted · 1

M routes.ts

Commits · 3

9f3c2e1 expire by age
41ab0d7 add middleware
c02e9f4 session tests

Branches

agent/session-expiry
routes.ts+3−2Viewed
4141 export function route(app) {
42- app.get("/orders", checkExpiry, orders)
43- app.get("/billing", billing)
42+ app.use(requireFreshSession)
43+ app.get("/orders", orders)
44+ app.get("/billing", billing)
4445 }
middleware/session.ts+11Viewed
1+ const maxAge = 30 * 60 * 1000
2+
3+ export function requireFreshSession(
4+ req, res, next,
5+ ) {
6+ const at = req.session?.issuedAt ?? 0
7+ if (Date.now() - at > maxAge) {
8+ return res.status(401).end()
9+ }
10+ next()
11+ }
session.test.ts+41Viewed
main…agent/session-expiry4 files+59−21 / 4 viewed

walkthroughs

Agents walk you through their changes.

An agent publishes a guided tour of the files and diffs it touched. Each step opens its lines with the note inline. Steps pinned to a commit never move; if code drifts, the step says so instead of guessing.

$ zero walkthrough publish walkthrough.json

Ctrl → next stepCtrl ← previous

zero ~/code/api · walkthroughssynthetic demo

Walkthroughs · 3

Session expiry fix4
Cache invalidation6
Billing retries3

Steps

1 · routes.ts
2 · session.ts
3 · session.test.ts
4 · README.md
session.ts· step 2 of 4routes.ts
12export function requireFreshSession(req, res, next) {
13 const age = Date.now() - req.session.issuedAt
14 if (age > MAX_AGE) return res.redirect("/login")

2Step 2 of 4

Age is measured from issuedAt, not last activity, so long sessions now expire on schedule.

15 next()
16}
pinned to 9f3c2e1read-only

remote

Serve a remote box to your laptop.

Run zero with --remote beside the files, then zero connect on your computer. The desktop app opens that machine in its own window over pinned TLS with a token. The host needs only the CLI.

Remote hosts
on the host · ssh dee@boxsynthetic demo
$ zero ~/code/foo --remote
  zero 1.4.0
  serving directory: /home/dee/code/foo

  on your computer, run:
  zero connect 10.0.0.5:7971/<credential>

on your laptop

$ zero connect 10.0.0.5:7971/<credential>
zero://r-3f9a1c2b7d4e/· foo
foo
cmd
README.md

foo

Served from the host over pinned TLS with a token, in its own window, tabs, and settings.

lean

Lean by construction.

One Go binary with its web app embedded. The desktop app uses the OS web view, not Electron. Files are never written, and git objects are read directly, never through the git binary.

curl -fsSL https://raw.githubusercontent.com/flexdinesh/zero/main/scripts/install.sh | sh

If zero is taken, confirm zero-cli in your terminal or choose --name. Install details

zero · factssynthetic demo
facts
Read-only
files never change
1 binary
Go, web app embedded
No Electron
desktop uses the OS web view
No git binary
reads git objects directly
No CDN
every asset bundled
Idle exit
daemon stops after 30 idle min
$ which zero
/home/dee/.local/bin/zero
$ zero daemon status
zero daemon 1.4.0 (protocol 1) at /run/user/1000/zero/daemon.sock, pid 4182, 2 roots
one binaryidle exit after 30 min