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

推荐订阅源

T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
P
Proofpoint News Feed
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
A
About on SuperTechFans
T
Tenable Blog
M
MIT News - Artificial intelligence
IT之家
IT之家
I
Intezer
D
DataBreaches.Net
爱范儿
爱范儿
T
Threatpost
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AWS News Blog
AWS News Blog
博客园 - 聂微东
C
Check Point Blog
S
Securelist
有赞技术团队
有赞技术团队
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
D
Docker
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
L
Lohrmann on Cybersecurity
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog

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 - amitb-quantum/roboapi: The unified API layer for robotics. Connect any robot, any brand, with one SDK. Like Stripe, but for robots. GitHub - manankharwar/fusioncore: ROS 2 sensor fusion SDK: UKF, 3D native, proper GNSS, zero manual tuning. Apache 2.0. Show HN: Wayland Wlroot Hjkl Everywhere Show HN: Codex context bloat? 87% avg reduction on SWE-bench Verified traces GitHub - NoahCristino/llmcat: A simple CLI that transforms your code into clean, structured text for feeding into LLMs. GitHub - actuallyepic/background-computer-use GitHub - h4ckf0r0day/obscura: The headless browser for AI agents and web scraping GitHub - anthonybudd/Express-ts-API-Template: Production-ready minimal REST API boilerplate using Express.js, Sequelize and MySQL. GitHub - molefrog/lilmd: Agent-friendly CLI for reading large Markdown files Show HN: I built a simple site to reduce tool overload and improve focus GitHub - JonathanRosado/claude-anyteam: Native Claude Code teammates, any LLM. Codex today. Gemini, Kimi, GLM, DeepSeek next. GitHub - abi/lilo Show HN: ffmpeg-render-pro – Parallel video rendering with live dashboard GitHub - adam-s/HNswered: Notifies you when someone replies to your Hacker News posts and comments. GitHub - arian-gogani/nobulex: The accountability primitive for AI agents. Cryptographic behavioral commitments with trustless verification. GitHub - Developing-Gamer/roids: Steroids for your AI agents GitHub - nellavio/nellavio: 🚀 Next.js dashboard starter with auth, i18n, 18 pages, 60+ charts and 90+ UI components Spotify – Web Player GitHub - tillahoffmann/cctape: Claude proxy to record all interactions in a local database, allowing you to browse and search sessions, track usage, and let Claude search its own history over MCP. Show HN: Rook, a macOS notes app for developers GitHub - donchuru/mr-links: Chrome extension that shows referenced links above comments on Marginal Revolution assorted links posts GitHub - anubhavgupta/whisper-npu: Speech to text at cursor using NPU. (shortcut -> win+/) SHOW HN: I built a marketplace agency that treats profit as the actual metric GitHub - trycua/cua: Open-source infrastructure for Computer-Use Agents. Sandboxes, SDKs, and benchmarks to train and evaluate AI agents that can control full desktops (macOS, Linux, Windows). GitHub - montanaflynn/headless-terminal: Headless terminal — puppeteer for TUIs (vim/emacs/htop/nethack) with a Go CLI backed by libghostty-vt The Genesis of TurboPentest.com: Bridging the Gap in an AI-Code Explosion Era GitHub - VincenzoManto/Doxa: A YAML-driven multi-agent simulation platform for economic and social systems. It combines LLM-backed agents, market microstructure, relation graphs, and world events behind a FastAPI API and a React client. GitHub - IdreesInc/PokeMesh: Collaborative Pokémon over a decentralized network, no internet required! GitHub - tamnd/python-one: Historical Python source tarballs (1.0.1 through 2.0c1) mirrored from legacy.python.org, extracted and committed at their original release dates. GitHub - dixalex/decision-linter: Decision Linter — like ESLint for your thinking. Claude Code plugin that scores assumptions, runs consider-the-opposite, and outputs judgment memos. GitHub - pitermarx/Virgulas: An Workflowy Inspired Outliner Show HN: A standalone YouTube Music popup for OBS (no plugins required) GitHub - polotno-project/render-tag: Render HTML string into canvas using 2d native API libgoc/bench/README.md at 81798b3dd5e27d7f1e752b6cff0bdf3a95d381b7 · libgoc/libgoc Show HN: Llm.sql – Run a 640MB LLM on SQLite, with 210MB peak RSS and 7.4 tok/s GitHub - RivoLink/leaf: Terminal Markdown previewer — GUI-like experience. [China AI News] Eight Chinese chip families ran DeepSeek V4 on launch day GitHub - michaelaz774/decision-engine: A decision operating system for startup founders, powered by Claude Code. Synthesizes wisdom from 25+ legendary founders and investors into interactive AI-driven decision frameworks. Sheetflow App - Webflow Apps & Integrations Questly — The Third Rail GitHub - crufter/safer: Sleep better while AI agents have shell access. gitrails/README.md at main · maxawzsinger/gitrails Show HN: RustNmap | Hacker News GitHub - 0x0funky/agent-sprite-forge: Agent Skill for generating 2D sprite sheets, transparent PNG frames, and animated GIFs from prompts. Submissions from github.com/darshanfofadiya | Hacker News GitHub - seb3773/ntfs-repair-rfc: A legally defensible, industry-grade blueprint for building an open-source NTFS structural repair engine from scratch. TOSTask - Chrome 应用商店 GitHub - Fergana-Labs/stash: Shared memory for your team's coding agents GitHub - AdirAmsalem/easl: Instant hosting for AI agents — turn output into pages worth sharing Show HN: Pdfnative – zero-dependency TypeScript PDF engine GitHub - EricNelson12/retrocycles-hilbert GitHub - ONSARI/payclaw-skill Earful — A voice-only social network GitHub - Chrilleweb/dotenv-diff: Validate environment variable usage in your codebase llms-wordpress-plugin-benchmark/README.md at main · guilamu/llms-wordpress-plugin-benchmark GitHub - agentdmai/teamfuse: Fuse Claude Code agents into a working team. AgentDM-powered template with a cabinet-style control panel, five starter roles Thedex — AI-Native Log Intelligence Introducing Universal Deploy (+server) | Vike GitHub - thomas-vilte/mls-go: MLS Protocol (RFC 9420) implementation in Go. Secure group key exchange with forward secrecy and post-compromise security for E2EE messaging. GitHub - tamnd/python-0.9.1: Python 0.9.1 from 1991, Guido van Rossum's first public release, patched to compile on modern systems GitHub - orchidfiles/ungate: Use your Claude and ChatGPT subscriptions in Cursor instead of paying for API tokens. Show HN: Rusty Browser – AI rust service spinning up AI browsers Show HN: Seleci – Pre-built AI agents that keeps your business running GitHub - SkardiLabs/skardi: Spark for Agents — a data platform that gives AI agents full data autonomy so every dataset in your stack becomes something an agent can actually use. sss/Design.md at share-hn · ekipan/sss GitHub - TwillAI/agentbox-sdk: The open-source TypeScript SDK for running AI coding agents in sandboxes. One unified API — swap agents and infrastructure providers without changing your code. GitHub - cheprasov/ts-jsbt: JavaScript Binary Transfer (JSBT) – a binary serialization format designed for JavaScript → JavaScript communication. GitHub - AI-Colleagues/skill-mgr: Agent Skill manager. Install a skill for all supported or specified agents When Your Repo Moves, Your AI Coding History Doesn’t Buffer zoom GitHub - janaraj/tnl: Structured English contracts for AI coding agents — proposed by the agent, approved by you, saved on disk, read by every future session. Show HN: Slopify – An AI agent skill to slopify a codebase GitHub - tinyhumansai/openhuman: Your Personal AI super intelligence. Private, Simple and extremely powerful. Show HN: Reducing a 66-node dependency cycle to 13 in Scrapy GitHub - NV404/gova GitHub - latitude-dev/eval-skills: LLM eval skills for developers. Free tools to find failure patterns, build evals, and improve AI quality in production GitHub - BadC-mpany/lilith-zero: ⚸ Lilith Zero - Security Middleware for MCP tool calls written in Rust. GitHub - pumpkin-bit/Flux3n1: Music generation using the Collatz conjecture formula GitHub - Lumen-Labs/brainapi2: BrainAPI is a knowledge graph–powered AI memory layer that transforms unstructured data into structured knowledge, enabling intelligent search, recommendations, and contextual memory for AI agents and applications. An agent-native static host for AI-generated sites · VibeDrop GitHub - k38f/envsleuth: 🕵️ Detective for env vars in Python code. Finds os.getenv/os.environ usages via AST and checks them against your .env file. whodb/cli at main · clidey/whodb GitHub - Higangssh/winclipshot: Windows clipboard-to-path helper for terminal CLIs like Claude Code. Screenshot with Win+Shift+S, paste the saved path with Ctrl+V GitHub - decisionbox-io/decisionbox-platform: DecisionBox connects to your data warehouse, runs autonomous AI agents that write and execute SQL, and surfaces validated insights and actionable recommendations — without you asking a single question. GitHub - scastiel/kado: Kadō — A privacy-first habit tracker for iPhone and iPad. GitHub - franzenzenhofer/tinyscreenshot: Token-frugal screenshots for AI agents. A default capture costs ~540 tokens instead of ~2100. GitHub - russellromney/honker: SQLite extension + bindings for Postgres NOTIFY/LISTEN semantics with durable queues, streams, pub/sub, and scheduler Manex Hub App - App Store Release 0.5 · greymattergames/unbug GitHub - mljar/features_goldmine: Features Engineering Made Easy GitHub - chojs23/lazyagent: TUI for watching all your AI coding agents(claude, codex and opencode) Running Is The Hardest Endurance Sport? Not so Fast Show HN: Canopy – A2UI experiment in Go for macOS/AppKit Show HN: Share browser recordings on Cloudflare Pages from the command line GitHub - aiptimizer/TurboOCR: Fast GPU OCR server. 270 img/s on FUNSD. TensorRT FP16, PP-OCRv5, HTTP + gRPC. Show HN: We built a way for Claude Code to join meetings like a real teammate Show HN: Razorpay-universal – A framework-agnostic Razorpay SDK
GitHub - kakwa/whim-proxy: Webhook In the Middle Proxy: proxying your webhooks for local dev
kakwa_ · 2026-06-13 · via Hacker News: Show HN

whim-proxy

CI Coverage

Whim-proxy (WebHook In the Middle Proxy) is a lightweight tool designed to help developers implement webhook consumers.

Webhook producers often can't reach NATed/firewalled developer machines nor could they be run locally (e.g. third-party like GitHub or Stripe).

Whim-proxy solves this issue with a whim-server & whim-client combo working as follows:

  1. A public/reachable webhook listener on whim-server receives the events from producers.
  2. Each event is then forwarded to subscribed whim-client processes running on developer's laptop via WebSocket reverse-tunnels.
  3. Finally, the whim-client takes the event, and reproduces the original webhook, targeting the local consumer being developed/tested.

Public instance

A public instance is available at https://whim-proxy.kakwalab.dev/ if you don't want to deploy your own server.

Download the client from the page, open a channel, and point your webhook sender at it.

Don't send sensitive data, cats cannot be trusted after all.

Quick start

# Build client and server binaries
git clone https://github.com/kakwa/whim-proxy && cd whim-proxy
make build

# Set a server listen address
WHIM_SERVER=localhost:9000

# Generate a channel uuid (can be reused accross sessions)
CHANNEL=$(./bin/whim-client --gen-uuid)

# Set the target Webhook url of your local event consumer
TARGET=http://localhost:8080/webhook



# 1. Start the proxy server on a public host (listens on :9000 by default)
./bin/whim-server -addr $WHIM_SERVER --log-level debug

# 2. Start a client on your laptop (switch protos to wss:// and https:// if TLS)
./bin/whim-client --server ws://$WHIM_SERVER \
    --log-level debug \
    --channel "$CHANNEL" \
    --target "$TARGET"

# 3. POST test webhook to channel:
curl -X POST "http://$WHIM_SERVER/hook/$CHANNEL" \
     -H "Content-Type: application/json" \
     -d '{"event":"ping"}'

Channel names must be valid UUIDs. The server rejects hook and subscribe requests with a 400 if the channel is not a well-formed UUID v4.

Treat the channel UUID somewhat as a secret. If the channel UUID is known, eavesdroppers could easily subscribe to your events.

Flags

Server (whim-server)

Flag Default Description
--addr :9000 TCP listen address
--log-level info Log verbosity: debug, info, warn, error
--json false Emit logs as JSON (default: console)
--backlog-size 10000 Max events kept globally in the in-memory store
--redis-url Redis URL (redis://...) — enables Redis store
--redis-ttl 24h TTL applied to each Redis channel key after its last write
--max-channels 100000 Max distinct channels tracked (0 = unlimited)
--max-clients 100 Max WebSocket subscribers per channel (0 = unlimited)
--max-clients-per-ip 1000 Max WebSocket subscribers per source IP (0 = unlimited)

Client (whim-client)

Flag Default Description
--server ws://localhost:9000 WebSocket server base URL
--channel (required) Channel UUID to subscribe to
--target http://localhost:8080 Local HTTP service to forward events to
--log-level info Log verbosity: debug, info, warn, error
--json false Emit logs as JSON (default: console)
--gen-uuid Print a new UUID to stdout and exit

API

Method Path Description
* /hook/{uuid} Receive a webhook and broadcast it to subscribers
GET /subscribe/{uuid} WebSocket — subscribe to a channel
GET /logs/{uuid} Return the last 10 events received on a channel

Event store

By default events and logs are kept in a local in-memory ring buffer with a set capacity.

For persistence across restarts and/or in a load balanced/HA setup, using Redis is recommended.

To do so, pass --redis-url and optionally, the set retention with --redis-ttl:

./bin/whim-server --redis-url redis://localhost:6379 --redis-ttl 48h

With Redis, each channel is stored as a list keyed whim:logs:{uuid}. The --backlog-size cap applies per channel, and --redis-ttl resets on every new event so the key expires only after a period of inactivity.

Logging

Both client & server use structured zap logging.

By default logs are human-readable console output.

Pass --json to switch to JSON-formatted logs.

At debug level, the server also logs the full decoded webhook payload for each event that has at least one subscriber.

./bin/whim-server --json --log-level debug

Version headers

whim-client and whim-server versions are self-reported through X-Whim-Proxy-Client and X-Whim-Proxy-Server http headers respectively.

Architecture

graph TD
    subgraph Public Internet
        WS[Webhook Sender<br/>e.g. GitHub / Stripe]
    end

    subgraph Public whim-proxy Server
        SRV[whim-server]
        CH1[channel: uuid-a]
        CH2[channel: uuid-b]
        SRV --> CH1
        SRV --> CH2
    end

    subgraph Developer Machine A
        CLA[whim-client<br/>--channel uuid-a]
        LA[Local Service<br/>localhost:8080]
        CLA -->|HTTP replay| LA
    end

    subgraph Developer Machine B
        CLB[whim-client<br/>--channel uuid-a]
        LB[Local Service<br/>localhost:3000]
        CLB -->|HTTP replay| LB
    end
    subgraph Developer Machine C
        CLC[whim-client<br/>--channel uuid-b]
        LC[Local Service<br/>localhost:3000]
        CLC -->|HTTP replay| LC
    end

    WS -->|POST /hook/UUID| SRV
    CH1 -->|WebSocket broadcast| CLA
    CH1 -->|WebSocket broadcast| CLB
    CH2 -->|WebSocket broadcast| CLC
Loading

Sequence

sequenceDiagram
    participant Sender as Webhook Sender
    participant Server as whim-server
    participant Client as whim-client
    participant Local as Local Service

    Client->>Server: GET /subscribe/{uuid} (WebSocket upgrade)
    Server-->>Client: 101 Switching Protocols

    Note over Client,Server: connection held open

    Sender->>Server: POST /hook/{uuid}<br/>headers + body
    Server-->>Sender: 200 OK

    Server->>Server: serialise to WebhookEvent JSON<br/>{id, method, path, query, headers, body}
    Server->>Client: WebSocket message (WebhookEvent JSON)

    Client->>Client: deserialise event
    Client->>Local: POST {target}{path}?{query}<br/>original headers + body
    Local-->>Client: 200 OK

    Note over Client,Server: if connection drops
    Client->>Server: reconnect with exponential backoff
Loading

Developing

make build     # cross-compile client for all platforms, embed in server, build local client
make test      # run tests with race detector
make coverage  # generate coverage.html
make clean     # remove bin/ and embedded client binaries