← AI Hacker Daily

Edition

06

picks

The facts about an agent live in the hop between it and the model.

The facts about an agent live in the hop between it and the model. That is the argument of the weekend's most-discussed builder essay, If you don't run your own LLM proxy, how do you know what's going on? (203 points on HN). The author says a provider's usage panel is "not token usage statistics with time series data meant for engineers," and that their own proxy lets them find why a cache miss happened in about 20 seconds. The thread argued the method rather than the goal: LiteLLM, Bifrost and GOModel as gateways, OTel traces from Claude Code and Codex as the no-proxy route, the JSONL session files in ~/.claude/projects/ for anyone on a subscription. Today's picks all sit in that hop or send something down it. So the question for each is what crosses it, who receives it, and whether you can see it. Headroom rewrites what your agent sends, and reports home by default. DeepSeek's new Flash checkpoint is cheap per token and expensive per task at max effort, which you only learn by counting. Sphinx sends your diff to a second model before git push completes. A WhatsApp MCP server sends other people's messages to whichever model your client uses. SMG is the gateway for when the model is yours too.

01

Headroom — a local proxy that compresses tool output before your coding agent pays for it

Headroom (Apache-2.0, Python with a Rust core, 75,983 stars, 317 of them today on GitHub trending, v0.41.0 on Wednesday) sits between a coding agent and the provider and shrinks what the agent reads: tool output, logs, files, RAG chunks and history. A content router sends JSON to a statistical crusher that keeps errors, outliers and the first and last items, code to an AST-aware compressor, and prose to a small Hugging Face model, Kompress-v2-base. The originals stay cached locally, and the model gets a headroom_retrieve tool to fetch the full text when the summary isn't enough. headroom wrap claude (or codex, aider, opencode and a dozen others) starts the proxy and launches the agent through it; headroom proxy --port 8787 serves any OpenAI-compatible client; headroom unwrap undoes it.

The numbers are the project's own and honest about their range. On four seeded scenarios built from real MCP output formats, it saves 21% on code search, 30% on issue triage and 57% on an incident log, and the README says prose and dense output "compress very little." The accuracy table runs 100 questions per benchmark and says itself that a three-point TruthfulQA gain is inside the confidence interval. What crosses the hop also changes in ways you didn't ask for. Tool search on Anthropic requests is on by default in the open-source build. wrap installs the Serena code-navigation MCP server into ~/.claude.json unless you pass --code-memory none. An anonymous beacon is on by default and reports compression ratios, provider and model IDs, OS and architecture (never prompts, code or paths). It turns off with HEADROOM_TELEMETRY=off or DO_NOT_TRACK=1. The output-trimming features, which append a terseness note to your system prompt and lower thinking effort after tool results, are off unless you set HEADROOM_OUTPUT_SHAPER=1.

Reach for it if your agent sessions spend most of their tokens reading logs and JSON. Delete the hand-written jq filters you pipe tool output through. Tradeoffs: it changes the request your provider sees, so put it behind something that logs before and after if you need to debug a bad answer; telemetry is opt-out; the savings figures come from the vendor's own fixtures; and the README carries an Enterprise upsell for routing and prompt-injection filtering.

→ github.com/headroomlabs-ai/headroom

02

DeepSeek V4.1 Flash 1017 — MIT-licensed MoE that beats Opus 5 on one coding benchmark, if you can pay for max effort

DeepSeek-V4.1-Flash-1017 (MIT, released Saturday, 947 points and 708 comments on HN, 17,924 Hugging Face downloads by this morning) is a point update to V4.1 Flash: a mixture-of-experts model with 552 billion backbone parameters, 8 billion active per token while reading the prompt and 16 billion while writing, 1M-token context and image input. DeepSeek's table has it at 77.0 on DeepSWE v1.1 against 74.0 for Opus 5, and at 42.3 on Terminal-Bench 4.0 (run in the Claude Code harness) against Opus 5's 51.8, up from 31.2 for the previous Flash. The weights aren't gated. There is no Jinja chat template. The card points to an encoding.py reference and a new Rust library, deepseek-recipe, that converts Messages, Chat Completions and Responses requests into DeepSeek's prompt format and parses the output back.

The per-token price hides the per-task cost. OpenRouter lists 1017 at $0.15 per million input tokens and $0.60 output, against $0.04 and $0.08 for the original V4.1 Flash, and one commenter in the Artificial Analysis thread saw providers ranging from $0.15 to $1.20. Another read AA's numbers as $0.26 and 4.9 minutes per task at max effort, against $0.21 and 2.9 minutes for GPT-6.1 Sol at medium. One user measured max at nearly twice the tokens of high for little gain on earlier checkpoints, and another runs it at low effort for a third to half the tokens. For local use, a commenter pointed to dsx, which runs it on two RTX 3090s and 128 GB of RAM at about 30 tokens a second. Another asked whether it is the first model through China's new export-control pre-registration, announced the day before.

Reach for it if you route agent traffic through a gateway already and want a cheap model to A/B against your frontier default on your own tasks. Delete the assumption that a "Flash" model is the cheap one per task. Tradeoffs: every benchmark is DeepSeek's own; max effort is verbose enough to give back the price advantage; the missing chat template means each serving stack has to adopt DeepSeek's encoder; and the 1017 per-token price is several times the checkpoint it replaces.

→ huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash-1017discussion ↗

03

Sphinx — a git hook that stops your push until you can explain what the agent's change does

Sphinx (MIT, JavaScript, 135 stars, repo created Wednesday, 246 points on Show HN) holds a git push to a protected branch until you answer questions about the change. A separate reviewer model reads the committed diff through read-only Git tools, never the conversation that produced it, and asks about behavior, failure modes and invariants: can this job run twice if the worker crashes between commit and acknowledgement? A wrong answer gets an explanation and a new scenario on the same concept. Passing lets the same push continue, and a pass holds for 24 hours on the same change. npm install -g sphinx-understand, sphinx install, then sphinx init in each repo. The reviewer runs on your Claude Code or Codex plan, OpenRouter, or any OpenAI-compatible endpoint, and Claude Code agents learn to wait for a blocked push through Sphinx's MCP server.

The README's "Before you install" list does most of the reviewing. sphinx install sets your global core.hooksPath, so every repo's pushes to main or master are checked from then on, with existing hooks still run first. The reviewer provider receives the changed files, your answers and a .sphinxcontext.md. .env files and keys are excluded by path, but a secret pasted into ordinary source is not. There's no default cap on model calls, at roughly 5 to 8 requests per check. It calls itself "practice, not a security gate," and the thread agreed: one commenter said developers on their team already have an agent write the PR description that was supposed to be handwritten, and have it remove their Husky hook, so they expect the same here. The project's own eval says it is "not an all-green semantic evaluation," with 12 of 14 grading probes matching on synthetic repos.

Reach for it if you merge agent-written code you couldn't explain in review, and want a habit rather than a gate. Delete the "quiz me on this branch" prompt you paste into a fresh session. Tradeoffs: one author wrote 81 of 83 commits; no native Windows; the examiner is an LLM that can grade a correct answer wrong; and it shares a name with the Python documentation generator.

→ github.com/parthh01/sphinxdiscussion ↗

04

whatsapp-mcp — your agent can search your WhatsApp chats, from a server in your own Cloudflare account

whatsapp-mcp (MIT, TypeScript, 210 stars, repo created Sunday, 115 points on Show HN) links to your personal WhatsApp account the way WhatsApp Web does and exposes read-only MCP tools: list chats, read one, full-text search across all of them, and save names for chats that show up as bare numbers. It runs as a Cloudflare Worker with one Durable Object holding the login and a SQLite message store. It never stays connected: when the agent asks and its copy is more than ten minutes old, and once a day by cron, it reconnects, collects what WhatsApp queued, and hangs up, so your phone keeps its notifications. Deploy is wrangler kv namespace create, an owner password, npm run deploy, a QR scan, then claude mcp add --transport http. Sending is not built, "on purpose."

The README is explicit about the account risk. It uses Baileys, the reverse-engineered WhatsApp Web protocol, which is against WhatsApp's terms; the author calls the risk for a read-only linked device "low, but it isn't zero." In the thread, one commenter said they get banned periodically using similar libraries, and another was flagged for linking WhatsApp's own Mac app. The other objection was what crosses the hop: the server is yours, but every message the agent reads, including ones from people who never agreed to it, goes to whichever model provider your client uses. The Show HN title says "free"; the README asks for the Workers Paid plan to raise the CPU limit for the first history import and says the author hasn't tried the free plan. The post described a Google login for contact names; the README now hands that job to your agent's existing contacts tool instead.

Reach for it if WhatsApp is where your family logistics live and you want "what did they say about the flights" answered without scrolling. Delete the exported chat .txt files you grep by hand. Tradeoffs: the account-ban risk is real, and one commenter noted that where they live WhatsApp is the contact channel for nearly everything; media and voice notes are labels, not content; six commits, a day old; and a failed first history import is gone until you relink.

→ github.com/finereli/whatsapp-mcpdiscussion ↗

05

SMG — a Rust gateway in front of your own vLLM or SGLang workers, with the metrics the essay asks for

Shepherd Model Gateway (Apache-2.0, Rust, 626 stars, v1.13.0 on Thursday, about 160 contributors listed) routes OpenAI, Anthropic Messages, Responses and Gemini-style requests to self-hosted vLLM, SGLang, TensorRT-LLM, TokenSpeed and MLX workers, or to OpenAI, Anthropic, Gemini, Bedrock and any OpenAI-compatible provider, behind one endpoint. Its main trick is cache-aware routing: it tracks each worker's KV-cache prefixes in radix trees and sends a request where its prefix is already warm. Its authors, from the LightSeek Foundation, wrote for the PyTorch blog that tokenization in both SGLang and vLLM had become a production bottleneck behind Python's GIL, so SMG tokenizes in Rust and talks to the engines over gRPC. docker pull lightseekorg/smg, pip install smg or a Helm chart; smg launch --worker-urls ... --policy cache_aware.

On the essay's terms it is the full answer: API-key auth, per-tenant rate limits and priority admission, 90-plus Prometheus metrics, OpenTelemetry traces propagated into the engines, structured logs, and chat history in your own Postgres, Oracle or Redis. MCP tool execution goes through approval policies with audit logging. It ships 21 tool-call parsers and 16 reasoning parsers for open models including DeepSeek, Qwen, Kimi and GLM, which is the work a model without a chat template pushes onto the serving layer. It is built for fleets: prefill/decode disaggregation, Kubernetes pod discovery and a gossip mesh for multiple gateway nodes.

Reach for it if you serve open models on more than one GPU box and want routing, auth and traces in one place instead of a Python router plus nginx. Delete the round-robin load balancer that ignores which worker has your prefix cached. Tradeoffs: it is overkill for one developer pointing Claude Code at an API; most of its value assumes you run the engines; three maintainers wrote about 2,600 of its 3,579 commits; and the "industry-first" claims in its description are its own.

→ github.com/smg-project/smg

06

Verification notes: star, license, creation, release, contributor and commit data are from the GitHub API on 2026-10-19; commit totals use the per_page=1 Link-header last-page count, and trending counts are from today's github:trending scrape. HN points and comments are from the Algolia API. The essay quotes are from the post itself; the gateway and OTel alternatives are from HN item 50145507. Headroom's architecture, benchmarks, accuracy caveat, defaults, Serena install and telemetry fields are from its README. DeepSeek's architecture is from the V4.1-Flash model card and the benchmarks, missing template and deepseek-recipe from the 1017 card; downloads and gating are from the Hugging Face API; prices are from OpenRouter's models API this morning; the provider spread, AA per-task figures, effort-level reports and dsx are from HN item 50148452; the export-control link is from HN item 50129045. Sphinx's mechanics, install scope, data handling and limits are from its README and the eval quote from eval/RESULTS.md; the hook-removal and naming comments are from HN item 50137950. whatsapp-mcp's design, terms warning, paid-plan note and naming approach are from its README; the ban reports, consent objection, "free" critique and the post's Google-login description are from HN item 50145715. SMG's features, backends and parsers are from its README; the GIL account and authorship are from the PyTorch blog post of April 30. Pipeline health: today's pool held 88 rows, against the ~280 the compose prompt assumes. github:trending returned 10 rows across four feeds, with the python feed empty, and Reddit returned zero again, 163 days since its last nonzero day on May 9.

→

One of these,
every weekday.

Free. One-click unsubscribe in every email. No tracking pixels in the email.