Open source · MIT · a zero-dependency Node server and single-file explorer for your workspaces.

View source
Project Hub
ai-automation-tools · open source · MIT

Your workspaces, docs and AI tools in one local browser.

Project Hub scans your workspaces and shows their repos, Git status, documents and AI agent tools in one browser interface. Browse files, search, bookmark pages, and preview Markdown, PDFs, HTML reports and images. The view updates as files change.

Features

What it does

Nothing is hard-coded. Every repo, runtime, skill, command, sub-agent, hook, MCP server and doc on the page comes from a live filesystem scan.

Every workspace, one server

One process scans the shared roots once and nests each project workspace under a single Projects folder. Open a project on its own, or the combined view across all of them.

projects/<Name>/hub.config.json

Repos with live Git state

A repos table with branch, clean or dirty, ahead and behind, plus each repo's rendered README, latest commit and its CLAUDE.md or AGENTS.md.

git status

Your AI agent setup

Skills, commands, sub-agents, hooks, MCP servers and plugins, split into Project CLIs and User CLIs: Claude Code, Codex, Gemini, OpenCode and Antigravity.

~/.claude · ~/.codex · ~/.gemini

A real document reader

Markdown rendered with its HTML header blocks intact, HTML preview and source, PDF preview, images, and links that jump inside the hub.

md · html · pdf · images

Search, bookmarks, recents

Ctrl+K search ranks runtimes and repos above folders and docs, and suggests close matches. An activity bar switches between explorer, bookmarks, recent documents, favorites and settings.

⌘K / Ctrl+K

Favorite websites

The hub's own favorites list, imported from any browser or synced live with Edge, Chrome or Brave. Websites can open in tabs inside the hub.

favorites.json

Nine colour schemes

Seven dark and two light, applied before first paint so a non-default scheme never flashes. The schemes differ in colour only.

obsidian · paper · nord …

Local and locked down

Binds 127.0.0.1 with a Host-header check and a CSP on every response. Configs, scans and logs stay out of Git. Optional phone access over your own Tailscale network.

127.0.0.1:4273
How it works

A scanner, a server and one HTML file

No framework, no bundler, no lockfile. Node's standard library and a single page served as-is.

  1. Point it at your folders

    The server config sets base and any sharedRoots. Each workspace gets its own hub.config.json with a name and dir.

  2. hub/hub.mjs scans and serves

    It walks the roots, reads Git state and frontmatter, and serves the result on loopback, by default http://127.0.0.1:4273.

  3. hub/index.html renders it

    The whole UI in one file. A watcher streams changes, so the page re-renders on its own when anything on disk moves.

Architecture

One Node process on loopback

The server checks every Host header and sets a CSP on every reply. It serves one cached scan to every tab, reads files only through the resolveId() gate, and rescans when the watcher sees a change.

Every component links to the code it describes; Route and Lens trace paths. Open full screen ↗
Quick start

Run it locally

Requires Node 18.17+ and Git on PATH. Windows launchers also need PowerShell 7 (pwsh). From the repository root:

project-hub · pwsh
# copy the example configs, then edit base, sharedRoots, name and dir
> Copy-Item project-hub/hub.config.example.json project-hub/hub.config.json
> New-Item -ItemType Directory projects/My_Workspace
> Copy-Item projects/_example/hub.config.json.example projects/My_Workspace/hub.config.json

# start the hub
> ./project-hub/Start-Hub.ps1

# or start Node directly
> node hub/hub.mjs --config project-hub/hub.config.json

Then open http://127.0.0.1:4273, or the port you configured. Native file-opening actions are Windows-specific. See the setup guide and the config reference.

Resources

Docs and links

Everything lives in the public repo on main.