Use it when your goal in memory and knowledge is clear and you can limit it to the data and actions it actually needs.
Gitnexus Explorer
Serve an interactive codebase knowledge graph web UI
What does it add to Hermes?
Serve an interactive codebase knowledge graph web UI
Gitnexus Explorer is a skill related to memory and knowledge. It helps Hermes retrieve past information or stored knowledge instead of starting from zero in every session.
This plain-language explanation is based on the publisher description. The original text remains visible for verification.
Do not add it merely to experiment when Hermes already has a simpler path, or when you cannot review its source and permissions.
Best for users who want a repeatable way of working inside Hermes.
Add a non-sensitive note, start a new session, and verify retrieval preserves the meaning without inventing details.
Serve an interactive codebase knowledge graph web UI
This entry was indexed from Hermes Optional Skills. Our explanation interprets the type and domain without inventing a capability not present upstream.
The source is official or editorially reviewed, but you still need to review permissions and version compatibility.
Inspect, install, then test.
- 01Open the source
Match the publisher, license, and description to your need. Check the real update history.
- 02Review permissions and secrets
Never paste a secret value into this site. Use environment-variable names and grant the smallest scope.
- 03Copy setup only after review
The controls below copy text. They do not execute commands on your device.
- 04Test with a non-sensitive task
Inspect the visible tools, then exclude write or delete tools you do not need.
Review the command, then copy it.
hermes skills install gitnexus-explorerHermes Belarabi does not execute this command. Installation happens on your device and remains subject to Hermes scanning and your review.
Exactly what Hermes loads when this skill runs.
Reproduced from the official documentation. Read it before enabling the skill: this text becomes the agent's instructions.
Serve an interactive codebase knowledge graph web UI.
Skill metadata
A lookup table. Do not read it all; find the row that applies to you.
| Source | Optional — install with hermes skills install official/research/gitnexus-explorer |
| Path | optional-skills/research/gitnexus-explorer |
| Version | 1.0.0 |
| Author | Hermes Agent + Teknium |
| License | MIT |
| Platforms | linux, macos, windows |
| Tags | gitnexus, code-intelligence, knowledge-graph, visualization |
| Related skills | hermes-agent, codebase-inspection |
Reference: full SKILL.md
Explains the idea itself. Read it slowly; the later sections build on it.
Index any codebase into a knowledge graph and serve an interactive web UI for exploring symbols, call chains, clusters, and execution flows. Tunneled via Cloudflare for remote access.
When to Use
Explains the idea itself. Read it slowly; the later sections build on it.
- User wants to visually explore a codebase's architecture
- User asks for a knowledge graph / dependency graph of a repo
- User wants to share an interactive codebase explorer with someone
Prerequisites
Explains the idea itself. Read it slowly; the later sections build on it.
- Node.js (v18+) — required for GitNexus and the proxy
- git — repo must have a
.gitdirectory - cloudflared — for tunneling (auto-installed to ~/.local/bin if missing)
Size Warning
Explains the idea itself. Read it slowly; the later sections build on it.
The web UI renders all nodes in the browser. Repos under ~5,000 files work well. Large repos (30k+ nodes) will be sluggish or crash the browser tab. The CLI/MCP tools work at any scale — only the web visualization has this limit.
Steps
Ordered, practical steps. Run one and confirm it worked before moving on.
1. Clone and Build GitNexus (one-time setup)
GITNEXUS_DIR="${GITNEXUS_DIR:-$HOME/.local/share/gitnexus}"
if [ ! -d "$GITNEXUS_DIR/gitnexus-web/dist" ]; then
git clone https://github.com/abhigyanpatwari/GitNexus.git "$GITNEXUS_DIR"
cd "$GITNEXUS_DIR/gitnexus-shared" && npm install && npm run build
cd "$GITNEXUS_DIR/gitnexus-web" && npm install
fi2. Patch the Web UI for Remote Access
The web UI defaults to localhost:4747 for API calls. Patch it to use same-origin
so it works through a tunnel/proxy:
File: $GITNEXUS_DIR/gitnexus-web/src/config/ui-constants.ts
Change:
To:
File: $GITNEXUS_DIR/gitnexus-web/vite.config.ts
Add allowedHosts: true inside the server: { } block (only needed if running dev
mode instead of production build):
server: {
allowedHosts: true,
// ... existing config
},Then build the production bundle:
cd "$GITNEXUS_DIR/gitnexus-web" && npx vite build3. Index the Target Repo
cd /path/to/target-repo
npx gitnexus analyze --skip-agents-md
rm -rf .claude/ # remove Claude Code-specific artifactsAdd --embeddings for semantic search (slower — minutes instead of seconds).
The index lives in .gitnexus/ inside the repo (auto-gitignored).
4. Create the Proxy Script
Write this to a file (e.g., $GITNEXUS_DIR/proxy.mjs). It serves the production
web UI and proxies /api/* to the GitNexus backend — same origin, no CORS issues,
no sudo, no nginx.
const API_PORT = parseInt(process.env.API_PORT || '4747');
const DIST_DIR = process.argv[2] || './dist';
const PORT = parseInt(process.argv[3] || '8888');
const MIME = {
'.html': 'text/html', '.js': 'application/javascript', '.css': 'text/css',
'.json': 'application/json', '.png': 'image/png', '.svg': 'image/svg+xml',
'.ico': 'image/x-icon', '.woff2': 'font/woff2', '.woff': 'font/woff',
'.wasm': 'application/wasm',
};
function proxyToApi(req, res) {
const opts = {
hostname: '127.0.0.1', port: API_PORT,
path: req.url, method: req.method, headers: req.headers,
};
const proxy = http.request(opts, (upstream) => {
res.writeHead(upstream.statusCode, upstream.headers);
upstream.pipe(res, { end: true });
});
proxy.on('error', () => { res.writeHead(502); res.end('Backend unavailable'); });
req.pipe(proxy, { end: true });
}
function serveStatic(req, res) {
let filePath = path.join(DIST_DIR, req.url === '/' ? 'index.html' : req.url.split('?')[0]);
if (!fs.existsSync(filePath)) filePath = path.join(DIST_DIR, 'index.html');
const ext = path.extname(filePath);
const mime = MIME[ext] || 'application/octet-stream';
try {
const data = fs.readFileSync(filePath);
res.writeHead(200, { 'Content-Type': mime, 'Cache-Control': 'public, max-age=3600' });
res.end(data);
} catch { res.writeHead(404); res.end('Not found'); }
}
http.createServer((req, res) => {
if (req.url.startsWith('/api')) proxyToApi(req, res);
else serveStatic(req, res);
}).listen(PORT, () => console.log(`GitNexus proxy on http://localhost:${PORT}`));5. Start the Services
# Terminal 1: GitNexus backend API
npx gitnexus serve &
# Terminal 2: Proxy (web UI + API on one port)
node "$GITNEXUS_DIR/proxy.mjs" "$GITNEXUS_DIR/gitnexus-web/dist" 8888 &Verify: curl -s http://localhost:8888/api/repos should return the indexed repo(s).
6. Tunnel with Cloudflare (optional — for remote access)
# Install cloudflared if needed (no sudo)
if ! command -v cloudflared &>/dev/null; then
mkdir -p ~/.local/bin
curl -sL https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 \
-o ~/.local/bin/cloudflared
chmod +x ~/.local/bin/cloudflared
export PATH="$HOME/.local/bin:$PATH"
fi
# Start tunnel (--config /dev/null avoids conflicts with existing named tunnels)
cloudflared tunnel --config /dev/null --url http://localhost:8888 --no-autoupdate --protocol http2The tunnel URL (e.g., https://random-words.trycloudflare.com) is printed to stderr.
Share it — anyone with the link can explore the graph.
7. Cleanup
# Stop services
pkill -f "gitnexus serve"
pkill -f "proxy.mjs"
pkill -f cloudflared
# Remove index from the target repo
cd /path/to/target-repo
npx gitnexus clean
rm -rf .claude/Pitfalls
Explains the idea itself. Read it slowly; the later sections build on it.
--config /dev/nullis required for cloudflared if the user has an existing named tunnel config at~/.cloudflared/config.yml. Without it, the catch-all ingress rule in the config returns 404 for all quick tunnel requests.
- Production build is mandatory for tunneling. The Vite dev server blocks non-localhost hosts by default (
allowedHosts). The production build + Node proxy avoids this entirely.
- The web UI does NOT create
.claude/orCLAUDE.md. Those are created bynpx gitnexus analyze. Use--skip-agents-mdto suppress the markdown files, thenrm -rf .claude/for the rest. These are Claude Code integrations that hermes-agent users don't need.
- Browser memory limit. The web UI loads the entire graph into browser memory. Repos with 5k+ files may be sluggish. 30k+ files will likely crash the tab.
- Embeddings are optional.
--embeddingsenables semantic search but takes minutes on large repos. Skip it for quick exploration; add it if you want natural language queries via the AI chat panel.
- Multiple repos.
gitnexus serveserves ALL indexed repos. Index several repos, start serve once, and the web UI lets you switch between them.