Repository navigation
README: rebuild around running it; layer write-up to docs/internals.md - #4
Merged
Merged
Conversation
Quick start, agent setup prompt, demo traffic, real output, requirements, what it can't see and an FAQ up front. The six-layer write-up, walk VM, self-tests and kernel matrix move to docs/internals.md unchanged, with a short Under the hood summary in the README. Adds the demo gif.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuilds the README in the shape of apiwatch's: what httpscope is and how to run it first, the engineering detail behind a link. Julian's layer-by-layer write-up moves to
docs/internals.mdword for word, so nothing in it is lost.Reviewer action items
docs/internals.md, with a short "Under the hood" summary in the README pointing into it?gh repo editreturns 404 on write access):ebpflinuxobservabilityyeetyeetkithttpapiapi-driftgraphqltcxuprobestlsai-agentsbpf/*/*.bpf.cdeclaresSEC("license") = "GPL". The README has no license section until there is one.What changed
assets/httpscope.gif), a one-sentence definition, a six-line Quick start, an agent setup prompt under the first tip, "What the quick start needs" (Node 24 from NodeSource, yeetkit as a sibling checkout,make bpf), the demo traffic script, real output from a test host, Requirements, What it can't see, FAQ, and a 169-word "Under the hood".docs/internals.md, unchanged apart from em-dashes and links./apipage documents them), and the stale line about yeetkit being a dependency by absolute path.Findings while writing it
WebSocketfireserrorand neverclose; Node 24 fires both. yeetkit's hub (src/host/bridge.mjs) reconnects only onclose, so on Node 22, if the first dial lands before the isolate is listening, every page and/apicall times out forever while the capture runs fine. The README requires Node 24 via NodeSource. A one-line yeetkit fix is to reconnect onerrortoo; itsenginesstill says>=20. (Debian 13's ownnodejsis 20.19, end of life since April 2026.)make bpffor you. yeetkit'shasBpf()only looks for top-levelbpf/*.bpf.c, and httpscope has one directory per tap, so a fresh clone fails withFailed to open BPF object …/bin/wire.bpf.ountil you runmake bpf./proc/<pid>/root"so containers work" and that containers are "not yet".discover.jshasconst container = false, and on a Docker host every container binary failed to attach. The README now says not yet.OWN_PORTSis fixed at 3000 to 3002. Run the app on other ports and it captures its own traffic. Documented in the FAQ.libssland Node attached, a Dockerised gateway decoded with astatus.newdrift event.response.type.changedfor the same field reported three times in the same millisecond. The README no longer says each change is reported once.Cold agent test
A fresh Debian 13 arm64 VM (no yeet, no Node, signed out of yeet) given only the "Have an agent set it up" prompt, with the clone pointed at this branch's README:
make bpfbuilt all 8 objects,npm run devin tmux,/api/statusup in about 6 s, ran the demo for three minutes.burstMaxmetric (65 calls a second), and the health check'sok: falseonly through its newdegradedkey. The README now says value changes aren't drift.bin/, port 3000 listening, 4,294 transactions, drift present.clang,llvmandlibbpf-devunprompted, so the prompt now saysmake bpfbrings its own compiler.