A public demo is an open invitation to spend someone else's money.
So: a ceiling on live sessions, a ceiling on concurrent runs, a per-address hourly limit, and a sweeper that disposes idle sessions and their files.
Being turned away is a real behaviour, and the page says so rather than pretending it never happens.
Half a day went into a search integration against a free tier that no longer exists.
A plan you read about in an article is not a plan that is still offered. Check the pricing page, on the day, before building on it.
The fix took ten minutes. Finding out took much longer.
The demo would not embed even after the policy allowed it.
X-Frame-Options cannot express an allowlist — it is SAMEORIGIN or nothing. Where it and the newer policy disagree, the stricter one wins.
So once a specific parent is permitted, the old header has to step aside entirely. Adding a rule is not the same as removing one.
The project image was generated by a PNG encoder written with nothing but node:zlib and a CRC table.
IHDR, IDAT, IEND. Filter byte zero on every scanline. Deflate the lot.
Not because it is the fast way — because the alternative was one more dependency in a project whose whole claim is that it has none.
The live demo showed nothing when embedded, and the reason was one cookie attribute.
A SameSite=Lax cookie is refused inside a frame on another site. Without it every request minted a new session — so the run and the event stream watching it ended up in different worlds.
Now it loosens only when actually framed, by an allowed parent, over HTTPS.
Every visitor's demo run asks the same handful of questions, and a paid search quota is a shared, finite thing.
So the second visitor gets the first visitor's results instead of spending a credit to learn the same answer. Six hours, then it expires.
Only successful lookups are cached. A failure has to be retried, not remembered.
The download is packed by a zip writer written from scratch: local headers, a central directory, CRC32, stored entries.
One bug worth the story — file modes are shifted left 16 bits, and in JavaScript that overflows into a negative number. Every archive came out subtly wrong until it was forced back to unsigned.
Posting to X still needs OAuth 1.0a — percent-encode the parameters, sort them, build a signature base string, HMAC-SHA1 it with a key made of two secrets joined by an ampersand.
It is about forty lines. Pulling in a dependency for forty lines you can read is how a project stops being auditable.
Your licence key is derived from your handle with an HMAC, not generated and saved.
Same handle, same key, every time — which means recovery is just claiming again, and there is one less secret sitting in a database waiting to leak.
The deriving secret never leaves the server. If it shipped, anyone could mint keys.
Piping a script from the internet into your shell asks for a lot of trust.
So this one is written to survive being read: it checks its inputs before doing anything, refuses to overwrite, never touches anything outside the directory it creates, and says what it is doing at each step.
Read it first. You should, for anything you pipe into a shell.
https://t.co/JLK74s6ucH is not a landing page with a waitlist.
It is three things: a live instance of the eight agents you can watch running right now, the full explanation of how they work, and the download if you want them on your own machine.
No sign-up to look. No email. Open it and something is already moving.
The zip you download is built from an allowlist, never an ignore list.
An ignore list is how a .env ends up inside an archive handed to strangers — you forget one line, and the mistake ships. An allowlist fails the other way: forget a line and a file is missing, which someone notices immediately.
Fail in the direction that gets caught.