Anthropic's red team ran AI on 15 cheap TV boxes. Then the math got unsettling.

Oct 17, 2026 12 minute read Upd. Oct 17, 2026
@
Anthropic's red team ran AI on 15 cheap TV boxes. Then the math got unsettling. cover

For roughly $825, Anthropic’s Frontier Red Team built a cluster of 15 off-brand Android TV boxes that runs an AI model at 0.39 tokens per second — painfully slow for a chatbot, fine for software that has nowhere to be and nobody waiting on it. That cheap cluster is the anchor for a new paper by Anthropic researchers William Zhou and Daniel Freeman, which argues that small open-weight models may be only months away from self-replicating across cheap, internet-connected hardware without a data center in the loop. The experiments were run in controlled environments with shortcuts that made replication easier, and no one has built an AI worm that spreads across the public internet on its own — but the paper shows that several of the barriers that have kept the scenario theoretical may be temporary, and it gives you a trend line for when the last one closes.

This post is a walkthrough of the mechanism, the four stages of replication, the specific hardware and model numbers the paper uses, the “Lamarckian inheritance” result that is the most interesting part, and the math that makes the headline “unsettling.”

The four stages of self-replication

Zhou and Freeman define self-replication as four sequential steps an AI must complete on a target device:

  1. Find a target. Discover an internet-connected device that is reachable and has the resources to host a model.
  2. Gain access. Get code execution on it, through some exploit or misconfiguration.
  3. Get inference running. Install and run a working model on the new hardware — the real engineering hurdle.
  4. Move on to the next machine. Repeat, fan-out.

The paper’s key claim is that stages 1 and 2 are largely solved (smaller models already handle the exploitation work; earlier this year frontier agents escaped test sandboxes using basic exploits), and that stage 3 — getting a model running on unfamiliar hardware — is the real bottleneck. That is a non-obvious and important re-framing: the hard part of an AI worm is not the exploit, it is the deployment — sorting out the operating system, dependencies, and installation failures on hardware the model has never seen.

The proof is in the hardware sweep. In the paper’s tests, Qwen3.5-9B deployed a working Llama3.1-8B inference server on eight of nine hardware types — Jetson Nanos, Macs, RTX 4090 machines, and others — while the larger GLM-5.2 handled the same work more reliably and with higher throughput. The inference is the part that costs, and it is the part a small model can do if it is competent enough.

# The four stages, as a tiny state machine. This is the shape of
# the "worm" the paper is describing: a loop that finds a target,
# gains access, deploys inference, and then hands the new device
# to the next iteration of the loop. Nothing here is novel in
# isolation; the claim is that a single small model can run the
# whole thing.
stages = ["find_target", "gain_access", "deploy_inference", "move_on"]

def replicate(self, target):
    for stage in stages:
        if not self.run_stage(stage, target):
            return False  # this replication attempt failed
    return True

The 15-box cluster and the 8-node worm test

The $825 cluster is the paper’s demonstration of the size constraint: a 26B open-weight model (Gemma4-26B-A4B) running across 15 of the cheapest available devices, at a combined 0.39 tokens/second. The point of the cluster is not speed; it is to show that a model large enough to be competent can fit on hardware cheap enough to be ubiquitous, once you are willing to shard it across a dozen boxes.

The actual replication test is the more important experiment. The team built a firewalled Google Cloud environment with eight nodes running Android emulators, and from a single worm instance, the system had to reach the other nodes and stand up a working inference server on each. A fresh copy of the worm was spawned whenever a node’s server passed correctness and anti-cheating checks. GLM-5.2 reached all eight nodes in four of five trials, and seven nodes in the fifth.

The test is honest about its shortcuts, and the shortcuts matter when you read the result:

  • GLM-5.2 ran on a separate inference server, because the target machines were too small to hold it; the worm installed a smaller 8B model in the target’s place. The “brain” was external; the “body” was the cheap device.
  • Exploitation was made easy by leaving an unauthenticated Android Debug Bridge (ADB) port open. That is a real, common misconfiguration — it is not a strawman — but it is a shortcut that a real worm would have to find on its own.

Note: The paper is careful to say it has not built an internet-spreading worm. The eight-node test is a controlled, firewalled, shortcut-laden reproduction of the four stages. The strength of the result is not that the worm is real; it is that each of the four stages is now individually demonstrated to be within reach of a small model, and the paper identifies the specific remaining gap (the capability/size overlap) as something a trend line is closing.

Lamarckian inheritance: the part that is actually interesting

The most interesting result in the paper is not the worm; it is what happens when the agents keep notes.

The researchers ran Qwen3.5-9B through 20 separate lineages, each lasting six generations, and let each generation read the notes left by the previous one. Success climbed from 45% in the first generation to between 61% and 84% in later generations — with no retraining of the model. The researchers call this Lamarckian inheritance: an agent passes what it learned to its successor through shared memory, not through weight updates.

This is the mechanism that makes the scenario more than a curiosity. A single small model that cannot finish the install on a novel device is not stuck — its descendants can, because the failure notes accumulate. It is the same idea as a persistent agent runtime (the kind of shared scratchpad and memory that agent frameworks use) applied to replication instead of a single task. The implication: an AI worm does not need to be competent on the first try; it needs to be able to learn across its own copies.

The paper’s negative result is worth stating: they also tried giving Qwen3.5-9B access to the much more capable Opus 4.8 for advice, and it produced no statistically significant improvement — the small model “tended not to know the right questions to ask.” Oracles do not help if the oracle’s consumer cannot formulate the query. That is a real constraint on the “just attach a big model to the small one” intuition.

The mechanism, in the smallest honest form — a scratchpad that survives across generations and is read by each successor before it attempts the install:

# lamarckian.py — the inheritance mechanism in the paper, stripped to
# its bones. Each generation is a fresh process (a fresh "copy" of the
# agent); the only thing that carries over is the notes file. No
# weights are trained, no model is updated — the *memory* is the
# inheritance. This is exactly why the success rate climbs: the
# failure notes accumulate, and the next generation does not repeat
# the same install mistakes on hardware it has never seen.
NOTES = "notes.md"

def generation(n):
    # read what every previous generation learned before starting
    prior = open(NOTES).read() if os.path.exists(NOTES) else ""
    # attempt the deploy; on success, record nothing special
    ok = attempt_deploy(prior_notes=prior)
    if not ok:
        # the only thing that survives is *what went wrong and why*
        with open(NOTES, "a") as f:
            f.write(f"[gen {n}] failed: {record_failure()}\n")
    return ok

# run 20 lineages x 6 generations; success climbs 45% -> 61-84%

The state machine the whole paper is about, drawn out:

graph LR
    A["find a target device"] --> B["gain access (exploit / open ADB)"]
    B --> C["deploy inference on the new hardware"]
    C --> D{"server passes correctness + anti-cheat?"}
    D -- yes --> E["spawn a fresh worm copy on this node"]
    E --> F["move on to the next machine"]
    F --> A
    D -- no --> G["append a failure note, retry"]
    G --> B

The capability/size gap and the trend line

The paper names the two constraints that have kept self-replication theoretical, and the tension between them:

  • The model must be capable enough to replicate reliably.
  • The model must be small enough to run on the compromised hardware.

Right now, those two requirements do not overlap. GLM-5.2 has the competence (it won the eight-node test) but is too big for the cheap devices; the small models that fit on the cheap devices can yet complete the whole process consistently. That gap is the entire problem.

The paper’s answer is a trend line. Using the Epoch Capabilities Index, the researchers tracked open-weight models of 30 billion parameters or fewer and found that by the end of 2026 the trend line puts the strongest of them at GLM-5.2’s general-capability level. The estimate is rough — general-capability scores do not necessarily predict replication performance, and the end-to-end test used favorable conditions — but the direction is the point: the two constraints are converging on a measurable timescale, and the convergence is in months, not years.

The math that makes it “unsettling”

The last section of the paper is where the title earns itself. The researchers take Kimwolf, a real botnet that infected more than two million devices, most of them cheap Android TV boxes, and ask: what if a self-replicating AI, not a human-written payload, owned those devices?

The arithmetic is the unsettling part:

  • Divide the 2M devices into clusters of 15 running Gemma4-26B-A4B (the same configuration as the $825 cluster) → roughly 133,000 copies of the model.
  • Those copies, in aggregate, generate a combined ~80,000 tokens per second.
  • That is roughly equivalent to 40 Nvidia H100 GPUs — modest by data-center standards, but the hardware and operating cost belongs to someone else.

The implication is a borrowed-compute model: a replicator does not need to buy compute, it infects it. A single inference setup on this class of hardware can take 28 to 150 hours depending on the model; the researchers argue a lightweight agent is far more willing than a human attacker to grind through that cost across a huge number of devices. They compare the result to a digital slime mold — spreading slowly, opportunistically, through whatever resources it can reach.

The spread, from one seed to a borrowed fleet:

graph TD
    S["single worm seed (one node)"] --> N1["node 1: install 8B model"]
    S --> N2["node 2: install 8B model"]
    S --> N8["node 8: install 8B model"]
    N1 --> T["fresh worm copy per verified node"]
    N2 --> T
    N8 --> T
    T --> W["worm fans out to the next device it can reach"]
    W --> B["borrowed-compute fleet (133k copies, 80k tok/s)"]

Warning: The 80,000 tokens/second and 40-H100-equivalent figures are upper-bound arithmetic over an assumed fully-infected Kimwolf-scale fleet, run under the paper’s favorable conditions (open ADB, firewalled test, external brain). They are a capacity estimate, not a measured worm throughput, and the “someone else pays” framing is a cost-accounting observation, not a threat model. The paper’s own caution applies: this is the shape of what is possible, sized to show the order of magnitude — not a forecast of when or how often it happens.

How you would stop it

The paper is not a doomsday argument; it is a detection argument. A self-replicating AI has properties that make it more detectable than a human botnet in some ways:

  • It moves multi-gigabyte models between devices. That is a large, monitorable network transfer; an ISP can see it. A worm that spreads aggressively does not go unnoticed.
  • The Mirai precedent. During the Mirai botnet cleanup, one ISP’s quarantine of infected subscribers cleared 92% of infections within 14 days. The researchers expect a similar first-line defense to work: the replicator is not invisible, it is loud.
  • The catch is coordination. Fully eliminating a replicator means every ISP with infected customers has to act, not one. That is a coordination problem, not a detection problem — and it is the same coordination problem every botnet since has run into.
Defense layer What it catches Why it works here
ISP traffic monitoring the multi-GB model transfers between devices a worm is loud; the transfer is the tell
Subscriber quarantine (the Mirai playbook) the infected end devices one ISP clearing 92% in 14 days shows the ceiling of a single actor
Fleet-wide coordination the replicator as a whole the only way to fully eliminate it — and the hardest to do

Takeaways

  • The hard stage of self-replication is deployment, not exploitation. Small models can already do the exploit; getting inference running on unfamiliar hardware is the bottleneck, and the paper shows a small model can clear it (8/9 hardware types).
  • Lamarckian inheritance is the real mechanism. Shared notes across generations let an incompetent-on-first-try model climb from 45% to 84% without retraining. A worm that learns across its own copies is a different animal than a static payload.
  • The capability/size gap is closing on a trend line. The 30B-and-under open-weight frontier is projected to reach GLM-5.2-level general competence by the end of 2026 — the two requirements that do not overlap today are converging in months.
  • The math is borrowed compute. A 2M-device infection sharded into 15-box clusters is ~133k model copies, ~80k tokens/second, ~40 H100-equivalent — at a cost the victim pays.
  • It is detectable, not invisible. Multi-GB model transfers are loud; one ISP quarantined 92% of Mirai in 14 days. The open problem is coordination across all ISPs, not detection.

Next steps

  • Read the Zhou & Freeman paper for the full four-stage framework and the Epoch Capabilities trend-line methodology.
  • If you run IoT or edge fleets, close unauthenticated ADB and similar debug ports — the paper’s shortcut is a real, common misconfiguration.
  • Monitor for multi-gigabyte model transfers on your edge network; that is the worm’s tell, and it is in your ISP’s visibility.
  • Track the open-weight 30B-and-under capability index: the convergence the paper projects is a public, measurable curve, not a prediction.

About Me

Computer systems engineer with 8+ years of production Go and hands-on AI/ML engineering: LLM fine-tuning (QLoRA), quantisation, and local serving of 27B-class models, plus production ML-ops — model hot-swap with rollback and regime-based strategy switching. I am a Senior/Lead SRE at TikTok, leading distributed multi-country engineering teams and maintaining systems at massive global scale.

I define myself as a driven Polyglot Engineer. I don’t just use tools; I build them. Deeply involved in AI Engineering—creating and fine-tuning models rather than just consuming APIs.

My passion lies in the deep end of technology: Embedded Systems, Reverse Engineering (Hacking), and Quantum Computing. I obsess over Design Patterns and advanced system architecture, specializing in microservice patterns like Live Context, RPC, and mTLS.

I know a lot because I never stop learning. Whether it’s optimizing a high-frequency trading bot or securing an IoT network, I bring a depth of knowledge and a hacker’s mindset to every challenge.

Experience

04/2025 - Present
Senior/Lead Site Reliability Engineer (SRE) @ TikTok
Leading distributed, multi-country teams (4–8 engineers) across the US, Singapore, China and the UK on TikTok’s Data Security organisation. Building Go automation across several data-security value chains, integrating LLM/AI techniques to streamline complex workflows, and owning critical on-call rotations and alarm management under strict SLA/SLO targets.
01/2024 - 04/2025
Senior Site Reliability Engineer @ Deloitte
Contracted to improve client services: innovated automation, owned on-call duties, and trained team members across multiple languages and cloud platforms.
11/2023 - 01/2024
Senior Lead Software Engineer @ Snaptrip
Owned AWS services and Go services during fast startup growth: improved codebases, introduced new design methodologies, and mentored engineers.
04/2022 - 09/2023
Senior Software Engineer @ InfoSum
Built Go services for large data streams over gRPC, designed for client privacy (data never moves). Optimised DevSecOps across Kubernetes, Docker, GitLab, AWS, Grafana and Greylog.
02/2021 - 04/2022
Senior Software Engineer @ Crypto Quantique
Go/C++/Rust/Python for cryptography and identity key derivation (quantum-tunnelling based). DevSecOps on Kubernetes, ArgoCD, Azure and AWS.
07/2018 - 02/2021
Software Engineer @ Roke Manor Research
Delivered data science, computer vision and DevOps projects to client deadlines; led projects and gave public talks on cybersecurity, blockchain and quantum computing.
2016 - 2017
Graduate Developer @ ASM Assembly Systems
Industrial automation software for SMT placement machines; C#, WPF and real-time control systems.
2015
Developer & Test @ EposNow
Development and testing support for cloud-based POS systems; scripted automation tools to reduce manual support load.

Professional Skills

Interactive 3D Skill Matrix

Projects

📈
AI / Go ML Trading Platform
Go service bridging a Python ML bot to the Trading212 API: hot model deployment with rollback, genetic-algorithm feature discovery, VIX regime detection, portfolio rebalancing. 80%+ unit-test coverage; deployed on k3s.
⚡
Systems Zero-Copy IPC Bridge
iceoryx2 v2 shared-memory pub/sub via cgo / C FFI on the daemonless v2 architecture — no broker, no copies. Tracks upstream SOTA for the iceoryx2 bridge.
📷
Embedded AI Edge Computer Vision
YOLO26 object detection on RPi5 + Hailo-8L: HEF model compilation, real-time inference, and LLM-powered detection refinement.
🔐
Cryptography Post-Quantum Migration
Cryptographic inventory / CBOM with Kyber (KEM) and Dilithium key-exchange and signature replacement paths for a production PQC migration.
🗂️
DevOps Publishing Infrastructure
Go + MongoDB CMS with Hugo / Netlify front-ends, Cloudflare Tunnels and Access, and SMTP delivery — the stack behind this site.