惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Recent Announcements
Recent Announcements
B
Blog
D
Docker
V
V2EX
GbyAI
GbyAI
L
LangChain Blog
博客园 - Franky
U
Unit 42
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
博客园_首页
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客

Show HN

Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code.
GitHub - kmcheung12/janus
a_c · 2026-06-12 · via Show HN

Software development isn't a pipeline from idea to product. A product is what generates the next idea - what broke, what confused users, what worked better than expected. Janus closes that loop.

Most coding agents work from specs and diffs. They don't know what actually happened in the browser. Janus captures real sessions - interactions, errors, network calls - and pipes them directly into Claude, so your agent starts from what's true instead of what's assumed.

No more copy-pasting interaction traces into Claude. Your browser and terminal can do that itself.

Demo

demo.mp4

Dev workflow for splendor.

Architecture

  Browser                Terminal
┌──────────┐          ┌───────────┐
│Extension │          │ janus cli │
└────┬─────┘          └─────┬─────┘
     │ WebSocket            │ WebSocket
     │ ws://localhost:3457  │ 
     │                      │
     └──────────────────────┘
                    │
             ┌──────▼──────┐
             │  MCP server │
             └──────┬──────┘
                    │ SSE
             ┌──────▼──────┐
             │    Claude   │
             └─────────────┘

Extension - works standalone without the MCP server. Captures interactions in the sidebar and lets you copy a formatted prompt directly. The MCP server adds ambient, queryable access for Claude.

janus CLI - without the MCP server it's a no-op passthrough. The MCP server is required for CLI journeys to be queryable.


Table of contents

  • Install the extension
  • Install the MCP server
  • Install the janus CLI

Install the extension

Run from the repo root (/path/to/janus)

Chrome:

  1. npm install && npm run build
  2. Open chrome://extensions, enable Developer Mode, click "Load unpacked", select output/chrome-mv3/

Firefox:

  1. npm install && npm run build:firefox
  2. Open about:debugging#/runtime/this-firefox, click "Load Temporary Add-on", select any file inside output/firefox-mv2/

Install the MCP server

The MCP server is a local daemon that receives journey data from the extension and janus CLI over WebSocket, and exposes it to Claude Code via four MCP tools: list_journeys, get_journey_by_id, get_journeys_by_domain, and latest_journey.

1. Build the server

Run from packages/mcp-server

cd packages/mcp-server
npm install
npm run build

This compiles TypeScript to packages/mcp-server/dist/.

2. Start the daemon

Run from anywhere - keep this terminal open while using Claude Code

node /path/to/janus/packages/mcp-server/dist/index.js

The server listens on two ports:

  • 3456 - MCP SSE endpoint (http://localhost:3456/sse) - Claude talks here
  • 3457 - WebSocket endpoint (ws://localhost:3457) - extension and CLI talk here

3. Register with Claude Code

Run from the root of the project you want to use Janus in (not the Janus repo)

cat > .mcp.json << 'EOF'
{
  "mcpServers": {
    "janus": {
      "type": "sse",
      "url": "http://localhost:3456/sse"
    }
  }
}
EOF

Claude Code picks this up automatically when you open that project.

To register globally instead (available in all projects), add the same block to ~/.claude/settings.json under "mcpServers".

4. Verify

In Claude Code, the mcp__janus__list_journeys tool should be available. Start a recording in the extension, then call list_journeys - the journey should appear.

Notes

  • The daemon must be running before Claude Code connects. If you start it after, restart Claude Code or reconnect the MCP server.
  • Journey data is in-memory only - it is lost when the daemon restarts. The extension will resync the active recording on reconnect, but stopped journeys are gone.
  • Attached files are written to $TMPDIR/janus-mcp/<journeyId>/ and survive daemon restarts at the filesystem level, but the in-memory journey record referencing them does not.

Install the janus CLI

The janus CLI wraps any command and streams its output as a journey to the MCP server, so Claude can see what your processes are doing alongside browser sessions.

1. Build and install

Run from packages/janus-cli

cd packages/janus-cli
npm install
npm run build
npm link

This makes janus available on your PATH.

Development (no build step)

Run from packages/janus-cli

npm install
npm start -- echo "hello"          # runs via tsx directly
npm start -- -n 100 rails server   # with flags
echo "hello" | npm start           # pipe mode

Or from anywhere after installing tsx globally (npm install -g tsx):

tsx /path/to/janus/packages/janus-cli/src/index.ts echo "hello"

2. Use it

Run from anywhere

# Wrap a command - captures stdout and stderr separately
janus npm run dev
janus python server.py

# Rolling window - keep only the last N lines (useful for chatty daemons)
janus -n 100 rails server

# Pipe mode - filter output before it reaches Janus
long_running_command | grep ERROR | janus -n 50

Janus prints the journey ID to stderr on start and again on exit:

[janus] journey: a1b2c3
...
[janus] journey: a1b2c3

Use that ID with get_journey_by_id or combine multiple journeys with merge_journeys to correlate CLI output with browser interactions.

Notes

  • The MCP server must be running before you use janus - if it's not reachable, the command runs normally with no MCP side effect
  • Without -n, all output is buffered in memory - use -n for long-running processes
  • janus exits with the wrapped command's exit code

Development

Run from the repo root (/path/to/janus)

npm run dev          # extension hot-reload (Chrome)
npm run dev:firefox  # extension hot-reload (Firefox)
npm test             # run tests