CLOSE ✕ What it does Philosophy Responsibility Install →
⚔ Glamdring · Foe-hammer

The sword that glows
when foes draw near.

Active defense for public and unsecured Wi-Fi. Glamdring watches an open network for the classic attacks, hardens your laptop so you can use that network with mitigated risk, and reacts to attackers — fast and disruptively, inside your own boundary, and never by hacking back.

Detect · deceive · tarpit · contain · hardenThe whole defense
No hack-backLegal boundary, in code
Free · AGPL-3.0Runs entirely on your machine

Install · one line

Up in one paste.

macOS on Apple Silicon. Paste this in Terminal — it downloads the app, verifies it against a checksum pinned in the script, and installs it to /Applications. No password, no cloud account, nothing to sign up for.

$ curl -fsSL https://thot.ai/glamdring/install.sh | sh
Requires macOS · Apple Silicon · Python 3.11+ Read the script first ↗ Release & checksums ↗

Verify it yourself. The archive (Glamdring-macos-arm64.tar.gz) has sha256 567cba81e6d03d8e355a2b0a5ce7d43894b11b3ce69636adf617a4ef4899fba2. The installer pins that exact value and refuses to install anything that doesn't match — and because the script is served from thot.ai while the binary lives on GitHub, a tampered download can't quietly ship its own checksum. This build is ad-hoc signed and not yet notarized by Apple; installed with the one-liner above it launches normally (a curl+tar install carries no Gatekeeper quarantine), and we'll say so plainly rather than pretend otherwise.

Prefer to do it by hand?
curl -fsSL -o Glamdring.tar.gz \ https://github.com/cloud-dance/Glamdring/releases/download/v0.1.0/Glamdring-macos-arm64.tar.gz shasum -a 256 Glamdring.tar.gz # compare to the sha256 above tar -xzf Glamdring.tar.gz mv Glamdring.app /Applications/ open -a Glamdring

What it does

Use the open network, with the risk mitigated.

On an unsecured network, anyone else connected can try to get at your laptop. Glamdring gives you a sensor for each classic move, a honeypot for what the sensors miss, and a hardening auditor that shrinks the attack surface before any of it starts.

🛰️ Detect

Sensors for ARP spoofing / MITM, evil-twin APs, rogue DHCP, DNS hijack, deauth floods, LLMNR/mDNS poisoning, and port scans — the whole open-Wi-Fi playbook.

🕸️ Deceive & tarpit

Decoy services and an AI tarpit maze hang an attacker's scanner and automation on your own sockets — burning their throughput and worker threads, on hardware you own.

⛓️ Contain

Blackhole a proven attacker at your local firewall, pin the real gateway's MAC so forged ARP is ignored, and — if you opt in — drop the Wi-Fi radio on a critical attack.

🛡️ Harden

A read-only posture audit scores this laptop and tells you, plainly, whether a script kiddie could get in — then closes the gaps only after showing you the exact commands.

🖥️ A real desktop app

A native macOS app with a live dashboard: a Wi-Fi panel that flags open networks, big counters for scans / intrusions / blocks, and native alerts when the window isn't focused. The server is loopback-only — 127.0.0.1, never routable off your machine.

🔒 Yours alone

Everything runs locally. No cloud service to trust, no account, no telemetry; the evidence log never leaves your laptop. Free and open-source under the AGPL-3.0 license.

The one rule that shapes everything

No hack-back — offense is unrepresentable.

Glamdring defends inside its own boundary only: it detects, deceives, tarpits, hardens, and blocks — on this host and this link. It never attacks, floods, damages, or exploits a remote machine, including an attacker's. That's not a missing feature — hacking back is a crime under the U.S. CFAA, the UK Computer Misuse Act, and equivalents worldwide, even when you were the victim first. So the codebase makes offense impossible to express: every response action is tagged SELF_HOST or NETWORK_EDGE, there is no REMOTE boundary, and the policy engine rejects anything else. What you get instead is aggressive, legal disruption:

You might want to…Glamdring does this instead — legal, effective
"shut the attacker down fast"Tarpit — hangs their scanner on our own sockets
"cut them off"Local firewall blackhole of the attacker at your edge
"get me off this bad network"Auto-disconnect your Wi-Fi radio on a critical attack (opt-in)
"trap the AI scraping me"AI tarpit maze — an endless deception that burns their compute
"stop the MITM"ARP pinning — nail the real gateway MAC so forged replies are ignored

Score your laptop

glamdring posture audits your Mac read-only and scores it. Passing the baseline set is what moves you out of a casual attacker's easy reach.

HOST & WI-FI POSTURE ============================================ Score: 88/100 Grade: HARDENED Script-kiddie resistant: YES A casual attacker on this network has no easy way in — defeating this posture would take a skilled, determined adversary. Residual risk is not zero, but it is well mitigated.

Example output. Hardening never changes a setting on its own — audit is read-only, and harden --apply shows the exact commands and asks first.

Two safety invariants, in code & tests

Only proven IPs are ever blocked. Auto-blocking fires only for a completed TCP handshake to us (honeypot / AI-tarpit / canary). Packet-based detections (ARP/DNS/DHCP/LLMNR/port-scan) carry forgeable source IPs — they alert, tarpit-flag, and pin the gateway, but never drive a by-IP block. Prevents self-DoS and being weaponized to blackhole a third party.

The gateway and your own host are never blocked. Resolved independently of any sensor, so the guard holds even if detection is misconfigured.

Response is dry-run by default; --apply (and root, for firewall/ARP) enacts. Modes: observe · contain (default) · aggressive.


The philosophy

Defense that stays honest under pressure.

Glamdring is built on the same conviction as everything Thot makes — we don't fake the wonder, we derive it. Here that means a security tool whose limits are load-bearing.

01 Your boundary is the whole boundary

The right to defend yourself does not extend to attacking back. Glamdring acts only on your machine and your link — and the code makes anything else impossible to express, not merely discouraged.

02 Risk is mitigated, never "solved"

No tool makes an open network safe. Glamdring is honest about that: it raises the bar high enough that getting past it takes a real professional, and it tells you loudly when someone is trying.

03 Nothing leaves your laptop

No cloud to trust, no account, no telemetry. The engine, the dashboard, and the evidence log all live on your machine. Trust is not required because nothing is sent.

04 Disruption without destruction

Tarpitting is the honest version of "fast and disruptive": it destroys the attacker's throughput and worker threads by making them wait on you — all on hardware you own, harming no one else.


The Web of Responsibility

Every principle, enumerated — and either applied or marked N/A, honestly.

Thot builds to a written discipline called the Web of Responsibility. In its vocabulary a thread is a principle; a knot is the concrete mechanism that ties it to reality — a test, a gate, a header, a design constraint. An unknotted thread is a wish. Below is the whole web walked against Glamdring and this page. Where a thread doesn't apply, we say so and why, rather than claim a checkmark we didn't earn — that honesty is itself the standing rule.

Applied a real knot holds it, with a way to verify. N/A by design a SaaS/data concern this local, account-less app doesn't have.

Threads this app & page actively honor

The principles from the web that a free, local, open-source macOS app can hold — each with the knot that holds it and how you can check.

PrincipleHow Glamdring applies it — the knotVerify
No offensive action AppliedLeast-privilege · bounded autonomy (OWASP LLM06) Every response is tagged SELF_HOST/NETWORK_EDGE; no REMOTE boundary exists, so hack-back is unrepresentable. Response is dry-run by default; the Wi-Fi auto-disconnect is opt-in. Read response/policy.py; the test suite proves offense is rejected.
Fail closed AppliedFail securely on missing/bad input The installer aborts if the download's sha256 doesn't match the pinned value. In the engine, only handshake-proven IPs are blocked, and the gateway/self are never blocked even if a sensor misfires. Tamper with the archive → install exits non-zero, nothing lands.
Install integrity AppliedReleased installs verify a sha256 manifest The one-liner's checksum is pinned in a script served from thot.ai — a different origin than the GitHub-hosted binary — so a swapped binary can't ship a matching checksum. The hash is printed on this page too. shasum -a 256 the archive; compare to the value above.
Security-headers baseline AppliedRule 4 of the operator canon This /glamdring surface ships a Content-Security-Policy plus X-Content-Type-Options, Referrer-Policy, and frame-ancestors 'none' — the page loads no third-party scripts and no inline JS. curl -I https://thot.ai/glamdring
Secret hygiene — nothing leaves the origin AppliedData-leak prevention · telemetry minimization The app runs entirely locally behind a loopback-only server; the evidence log never leaves the machine. This page sets no cookies, collects no form data, and phones no analytics of its own on the /glamdring route. Watch the network tab — no off-box requests from the app.
Copy honesty AppliedClaims must match the engine actually running "Free" is true here — Glamdring is AGPL-3.0 licensed, not a trial. The not-yet-notarized status is disclosed up front, the posture score is labelled an example, and every capability on this page traces to the shipped README and code. Cross-check any claim against the linked source repo.
Error messages that don't leak AppliedRule 11 — actionable, not sensitive The installer's failures are specific and safe ("checksum mismatch — refusing to install", "no write access to /Applications") with a next step, and never echo secrets or internal paths beyond the temp dir it created. Run it offline → a clear, bounded error.
Accessibility as a floor AppliedWCAG 2.2 AA intent Semantic landmarks and headings, keyboard-operable nav, visible focus, near-black/AA-contrast text, and every animation gated behind prefers-reduced-motion. Tab through the page; enable Reduce Motion.

Built to the Loom — the eight-station discipline

The web also governs how software is made. Glamdring was built through the same loom: state written down, work decomposed into small visible cards, each with an executable acceptance proof, adversarial review, and an owner's manual shipped with it.

State, not memory

Every session orients from a written headline before acting — no station is skipped because nobody remembers which one you're on.

Small, visible cards

The app grew as tracked tasks (GLAM-t1…t9), each with a Stop condition marking a clean, defensible place to pause.

Acceptance is executable

126 tests cover every sensor, the scoring logic, and — above all — the safety invariants: gateway never blocked, offense unrepresentable, observe mode changes nothing.

The owner's manual ships

This page, the README, and the in-app doctor/version commands explain how it works and state the legal boundary out loud.

Threads that are N/A — by design, and why

Much of the operator canon governs a hosted SaaS with a database, accounts, and payments. Glamdring has none of those: no server it owns, no user database, no accounts, no billing, no PII at rest. Rather than fake compliance, the web's own rule says to name the gap — so here it is, plainly.

  • Row-Level Security — no database to secure. N/A
  • Rate limits / spend caps — no metered API or paid lane to protect. N/A
  • CAPTCHA & CORS lockdown — no public forms or cross-origin API on this page. N/A
  • Auth failure-path tests — there is no login, reset, or session. N/A
  • Step-up (sudo) re-auth — no billing, key-reveal, or account deletion to gate. N/A
  • Idempotency keys — no payment or webhook mutations. N/A
  • 3-2-1 backups & restore drills — no server-side user data to back up. N/A
  • Privacy policy / data-residency — no personal data is collected or stored to govern. N/A

One honest loose end we're not hiding: Glamdring is ad-hoc signed and not yet notarized by Apple, and there's no Intel build yet. Those are on the roadmap; until then the page and installer tell you exactly what you're getting. That is the web's standing rule at work — when a thread is found bare, you name it, you don't paper over it.