Community gallery of Claude Code status lines.
10
stars
111
commits
TypeScript
primary language
Aug 19, 2026
updated
A community gallery of Claude Code status lines. Browse real configs as rendered previews, see which ones people copy, and copy one to your terminal. You see what each script actually renders to before you copy it, instead of guessing from the source.
Live at statuslin.es.
A status line is an arbitrary script Claude Code runs to draw the bottom strip of your terminal, so this site hosts and runs strangers' shell scripts. The safety model is the whole point:
COLUMNS/LINES passed in; then the sandbox is destroyed. (A script may declare network hosts
it needs; those submissions are held for human review and rendered behind an egress allowlist.) Browsing
the gallery serves pre-rendered HTML — no submitted script runs when you visit.Bun · Vite · TanStack Start (React SSR) · Better Auth (GitHub) · Drizzle + Postgres · E2B.
This is an agent-first codebase: most changes are written by AI agents against mechanical gates
(typecheck, lint, tests, git hooks). CLAUDE.md holds the conventions;
CONTRIBUTING.md is how to get started.
Prereqs: Bun and Docker. Then bun install.
There's no hosted dev database. Local dev runs against its own throwaway Postgres container. Port
5433 (host) so it won't clash with anything already on 5432:
docker run -d --name statuslines-postgres \
-e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=statuslines \
-p 5433:5432 postgres:17
Later, start/stop it with docker start statuslines-postgres / docker stop statuslines-postgres.
.env.local)Copy .env.example to .env.local. Bun auto-loads it, and it's the only env file the local app
reads. (.env.staging / .env.production are just the source you push to Fly secrets; see
docs/deploy.md.)
.env.example already ships with working local defaults for DATABASE_URL and BETTER_AUTH_URL, so
the only values you fill in are:
BETTER_AUTH_SECRET= # generate with: openssl rand -base64 32
GITHUB_CLIENT_ID= # from the GitHub OAuth app below
GITHUB_CLIENT_SECRET= # from the GitHub OAuth app below
E2B_API_KEY is optional locally — without it, submitted scripts render with a built-in fake runner.
The dev server's port is derived from BETTER_AUTH_URL, so the default :3100 comes from that
URL; change the URL and the port moves with it.
Sign-in is GitHub-only, so local dev needs its own free OAuth app:
statuslines-dev)http://localhost:3100http://localhost:3100/api/auth/callback/githubGITHUB_CLIENT_ID, then Generate a new client secret
and copy it into GITHUB_CLIENT_SECRET.bun run db:migrate # create the schema in the local DB
bun run dev # serves on the BETTER_AUTH_URL port (default http://localhost:3100)
Sign in once with GitHub to create your user, then (optionally) bun run seed:gallery for sample
configs. It needs an existing user to author them, so it must come after the first sign-in.
Once you have a user, bun run dev:login mints a session and prints a cookie command so an automated
browser can test signed-in pages without going through GitHub again — see
docs/testing-signed-in.md. (It needs an existing user, so it doesn't
replace that first GitHub sign-in.)
Run before every commit (also enforced by git hooks):
bun run check # typecheck + lint + test
Tests use PGlite against the real committed migrations, so they don't need the container running.
git push runs this same gate (via the pre-push hook), so a green bun run check means your push
will pass too.
There's also a browser smoke test — bun run smoke drives a real browser against the running app to
catch hydration/auth breakage the source gates can't see. It needs agent-browser, a migrated dev DB,
and a signed-in user, so it's not part of the push hook — run it locally when you touch the
client or auth.
Code contributions are welcome. See CONTRIBUTING.md. To share a status line you don't need this repo: submit it on statuslin.es. Found a security issue? See SECURITY.md.
MIT.
TypeScript
85.7%
Shell
10.1%
JavaScript
2.1%
Python
1.7%
Community gallery of Claude Code status lines.
10
stars
111
commits
TypeScript
primary language
Aug 19, 2026
updated
A community gallery of Claude Code status lines. Browse real configs as rendered previews, see which ones people copy, and copy one to your terminal. You see what each script actually renders to before you copy it, instead of guessing from the source.
Live at statuslin.es.
A status line is an arbitrary script Claude Code runs to draw the bottom strip of your terminal, so this site hosts and runs strangers' shell scripts. The safety model is the whole point:
COLUMNS/LINES passed in; then the sandbox is destroyed. (A script may declare network hosts
it needs; those submissions are held for human review and rendered behind an egress allowlist.) Browsing
the gallery serves pre-rendered HTML — no submitted script runs when you visit.Bun · Vite · TanStack Start (React SSR) · Better Auth (GitHub) · Drizzle + Postgres · E2B.
This is an agent-first codebase: most changes are written by AI agents against mechanical gates
(typecheck, lint, tests, git hooks). CLAUDE.md holds the conventions;
CONTRIBUTING.md is how to get started.
Prereqs: Bun and Docker. Then bun install.
There's no hosted dev database. Local dev runs against its own throwaway Postgres container. Port
5433 (host) so it won't clash with anything already on 5432:
docker run -d --name statuslines-postgres \
-e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=statuslines \
-p 5433:5432 postgres:17
Later, start/stop it with docker start statuslines-postgres / docker stop statuslines-postgres.
.env.local)Copy .env.example to .env.local. Bun auto-loads it, and it's the only env file the local app
reads. (.env.staging / .env.production are just the source you push to Fly secrets; see
docs/deploy.md.)
.env.example already ships with working local defaults for DATABASE_URL and BETTER_AUTH_URL, so
the only values you fill in are:
BETTER_AUTH_SECRET= # generate with: openssl rand -base64 32
GITHUB_CLIENT_ID= # from the GitHub OAuth app below
GITHUB_CLIENT_SECRET= # from the GitHub OAuth app below
E2B_API_KEY is optional locally — without it, submitted scripts render with a built-in fake runner.
The dev server's port is derived from BETTER_AUTH_URL, so the default :3100 comes from that
URL; change the URL and the port moves with it.
Sign-in is GitHub-only, so local dev needs its own free OAuth app:
statuslines-dev)http://localhost:3100http://localhost:3100/api/auth/callback/githubGITHUB_CLIENT_ID, then Generate a new client secret
and copy it into GITHUB_CLIENT_SECRET.bun run db:migrate # create the schema in the local DB
bun run dev # serves on the BETTER_AUTH_URL port (default http://localhost:3100)
Sign in once with GitHub to create your user, then (optionally) bun run seed:gallery for sample
configs. It needs an existing user to author them, so it must come after the first sign-in.
Once you have a user, bun run dev:login mints a session and prints a cookie command so an automated
browser can test signed-in pages without going through GitHub again — see
docs/testing-signed-in.md. (It needs an existing user, so it doesn't
replace that first GitHub sign-in.)
Run before every commit (also enforced by git hooks):
bun run check # typecheck + lint + test
Tests use PGlite against the real committed migrations, so they don't need the container running.
git push runs this same gate (via the pre-push hook), so a green bun run check means your push
will pass too.
There's also a browser smoke test — bun run smoke drives a real browser against the running app to
catch hydration/auth breakage the source gates can't see. It needs agent-browser, a migrated dev DB,
and a signed-in user, so it's not part of the push hook — run it locally when you touch the
client or auth.
Code contributions are welcome. See CONTRIBUTING.md. To share a status line you don't need this repo: submit it on statuslin.es. Found a security issue? See SECURITY.md.
MIT.
TypeScript
85.7%
Shell
10.1%
JavaScript
2.1%
Python
1.7%