Meta Global AI Developer Hackathon · 2026

Intelligence that doesn't wait for instructions.

Unbidden is an engineering agent you install like a CLI. It enters a repository it has never seen, runs the team's own checks in an offline sandbox, decides what is worth improving, makes the change, and measures whether the system actually got better. Then it says so at the level of evidence it reached, and not one level higher.

The loop, with no one steering

Each step is a job in a local queue. Each decision is recorded with its reason, and every byte that leaves the machine is kept.

observestack, CI, services, metrics, logs, a world model with provenance
decideexpected value per opportunity; declines what the team's CI already rules out
investigateproperty-based probes, read-only investigations
forgebuilds missing readers, judged by an oracle with no model
labcandidate vs base, the team's tests, CI parity, statistics
propose · operatePRs with evidence; deploy, judge, roll back under a mandate

Meta models, each where it belongs

Muse Spark 1.3 · remote

Heavy work on content allowed to leave: property tests, fixes, workloads, adapters. Private code reaches it only after the privacy bridge renames every non-public word.

Muse Glimmer · local

The only model that sees secrets, logs or production data. Chosen to fit the machine, from 30B 8-bit down to Llama 3.2 3B. Falling back to it is recorded, and a mandate can forbid it.

Guardian, deny by default

Pure Python; no model is its own control. Each payload is labeled, scanned and capped at 20 KB, then recorded byte for byte before it leaves.

A spend gate that cannot overrun

One ledger for the machine. Each call's worst cost is reserved before sending against a balance a person verified, with 20 % held back. US$0.96 spent so far, reconciled to the cent.

What it has shown

L4 is validated in the lab with the team's own checks. L5 is a measured effect in a running system, between deploys whose code is known. Negative results stay on the record.

SystemWhat Unbidden did on its ownLevel
full-stack-fastapi-templateFound an unindexed foreign key nobody had reported; GET /items 13.0 → 4.1 ms (p = 3.4e-08); merged and deployed itL4
same, live10.5 → 1.7 ms after deploy, below the floor its criteria had fixed beforehand, so no L5 is claimedL4, not L5
same, outage drillOutage called in 11 s, rolled back in 15 s with the team's steps, hold set for a personrollback
RichSearched blind: two crashes in split_text, one matching an issue it was never shown; fix measuredL4
mealieIndex found and measured: 14.5 s → 7 ms on SQLite, but the test suite never ran at the base, so it is a lab result, not a validated one. Deployed on Postgres: no change, baseline inferredL3 · L5 invalid

Across repositories it had never seen

Ten development and ten held-out repositories, chosen by written criteria and pinned before any run. They include languages Unbidden does not analyze yet, which stay in the denominator.

7 / 10
held-out repositories bootstrapped, unaided
0
false L4s on the holdout (pilot 1 had one)
5 / 5
environment findings declined before spending
US$0.35
four benchmark runs: 40 repository runs, 20 distinct repositories
The false positive. Unbidden removed two type: ignore comments its mypy called unused. The team's CI was green, under Python versions Unbidden had not used, where those comments are needed. The patch would have broken their build. Now the Director reads the CI's verdict in every cycle, and every candidate is re-checked under the CI's newest interpreter. On the real patch, mypy reports 2 new errors, and the patch is rejected. On the frozen holdout it found no validated improvement in ten mature libraries, and it claimed none.

Install

One line puts unbidden in its own environment with its own Python 3.12, through uv. The wheel is verified against the release's SHA256SUMS before anything is installed; nothing runs with sudo. macOS on Apple Silicon and Linux x86-64.

curl -fsSL https://unbidden.cl/install.sh | sh
cd your-repo
unbidden                  # first time: a guided setup, no YAML; afterwards, the status screen
unbidden start --ui       # the agent in the background, serving its own dashboard
unbidden status           # found, decided, checked, asked, proved, spent
unbidden stop             # the process ends; nothing is frozen, nothing is lost

The machine provides git; Docker for the sandbox; Ollama for the local model option; a Meta API key for the remote one. unbidden doctor says which of them your chosen option requires. Versions, exit codes, update and the uninstall that keeps your data: docs/INSTALL.md. Until the first release is published, the installer stops with "no published release found".