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

推荐订阅源

D
DataBreaches.Net
F
Fortinet All Blogs
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
罗磊的独立博客
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
U
Unit 42
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
G
Google Developers Blog
H
Help Net Security

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - kmcheung12/janus
a_c · 2026-06-12 · via Hacker News: 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