Repository navigation
Releases: nightwarelabz/nightjar
Release list
v12- Plumage
12.0 — 2026-10-23 — plumage
The Labz boot. The house opens in the lab's own colours now: the mare's eye ignites at its measured point, the halo swells around it, and NIGHTWARE LABZ resolves letter by letter as the stages tick off beneath — the boot is a warm-up, not a poster. On the film road the ceremony speaks terminal: a 178-card subtitle deck in the register of the wire, the manifest struck through with » markers, and one heartbeat line that names the live stage and settles, at the end, on ALL SYSTEMS NOMINAL.
The derivation core. The fingerprint whorl is gone. At the ceremony's centre three cipher rotors, ringed in hex glyphs, counter-rotate against the real boot progress and settle onto their grids as their locks land — 45, 75, 100 — while seventy-two entropy ticks light in order and one red ring, the mare's eye colour, pulses out at full lock.
Films frame their subject. A boot or backdrop film is analysed before it is framed — the largest face across its frames, weighted by attention — and hung on its subject; a still whose shape argues with the screen hangs whole on black instead of being cropped past its edges.
The great audit. The whole codebase — phone and Mac alike — was read cluster by cluster and repaired where the reading convicted it: a fragmentation trap at the sixteenth knock, key material that could have come up zeros, guest arithmetic that could trap its host, two dozen logic faults with names, a retired TLS API gathered behind one door, sixty-one closures brought to the current form, dead code buried, and one User-Agent that now derives from the build itself instead of remembering a version by hand.
The Mac brought current. The macOS target takes the same pass: its own authorisation road where the platforms differ, its film player at parity, its audio gates — the house stands whole on both kinds of glass.
Serve sits in the More menu. Taken off the bar in the last version and reachable only through Sessions, Serve is a room again — in the More menu, where it was always meant to move to. Sessions keeps its door.
The Ultimate Network Administration Tool. The README's masthead now says what the instrument is.
Onion. The wire itself gets a Standard: the bench's roads can wrap through Tor, graded on a seven-layer score, fail-closed the moment the wrap cannot be proven — and honest about its edges, with the roads that cannot wrap yet named rather than hidden.
App Lock. The whole house seals under a passcode of the operator's choosing — AES-256-GCM or ChaCha20-Poly1305, the work factor theirs, Face ID if they want it — under a lockout that escalates after five misses. The lock seals the interface; what it cannot seal, it says plainly.
Wardrive. The listening post travels: a survey mode samples the heard world every few seconds — the Wi-Fi it rides, the BLE newly heard, the place when permitted — into sessions that export and delete like everything else she collects.
The building's own systems. The bench learned to read the plant: alarm panels it only ever listens to, cameras by their nameplates, access and fire systems identified and graded — never a control, never a state changed, never a safety system addressed.
The Drip. A room of her own on the bar: the house's pulse on live meters, her neighbours counted, the tap's frames falling as they are caught. The tap hears the house's own engines now, too — the bench's probes and fetches recorded beside the wire's own traffic.
The calm house. The house opens quiet: GIFs off by default, haptics off by default, flicker nowhere, the operator working the toolings themselves. A choice is not a default — the boot film and a wallpaper the operator filed always play — and the reset is a true factory reset, the whole application restored exactly as it first shipped.
TOTALITY. One word in the console raises the whole house — her door served, the beacon shouting, Net-Assault up, the tap running — each organ under EMCON's say-so, its state read back and reported as it stands; the same word backwards stands down only what it raised.
The beacon, taught to prove itself. The payload beacon's long-haunting crash met an instrument instead of another guess: the beacon now climbs a ladder of advertisement shapes, each start written to the log, a shape the radio kills remembered across launches and never trusted again, a shape it accepts proven and kept.
No action GIFs. The five action films are removed — not gated, not stilled, removed: no GIF, no animation and no flicker attends any action anywhere in the house. What keeps its films: the boot screen, and the wallpaper, in every section.
A field instrument's finish. The last pass lettered the house as an instrument: Black Glass deepened until its words read at a glance, the Drip's meters set as instrumentation, her titles in capitals.
What's Changed
- Fix background task cancellation and Serve session ownership by @nightwarelabz in #16
Full Changelog: v11...v12
v11- churring
Full Changelog: v10...v11
nightjar 11.0 — release notes
The churring release: the bird's own song, and the house at full stretch.
11.0 — 2026-10-21 — churring
- Churring opens. The eleventh version is named for the nightjar's own song — the long churr the male pours across the dark, unbroken, unmistakable once you have heard it. Chorus was every voice at once; churring is the bird itself, at full stretch: a bench of instruments, a battery that runs itself, and the house on two kinds of glass now. What churring comes to mean will be written here as it lands.
- One name. The house is nightjar everywhere — the repository, the app, the source a sideload reads — no hyphen, no second word. Nothing about an existing install changes: the bundle, the keys, the name the phones call each other all stay exactly as they were.
- A Mac in the house. The whole instrument stands on macOS now, native: the sidebar shell, its own boot film shot for a laptop screen, the wheel and the console at desk size. The phone remains the flagship; the laptop is the bench it comes home to.
- The pentest bench. The console grows a full bench of graded audit instruments — twenty-three at the count: the web read (robots, webaudit, vhost, dirb, subdomains, methods), the name and the lock (axfr, dnsaudit, tlsgrade), the loud old doors (reflect), the brokers and the directory (mqttprobe, ldapprobe), and the second wave — corsprobe, openredirect, graphqlprobe, jwtcheck, proxyprobe, ftpprobe, smtpprobe, redisprobe, dockerprobe, vncprobe, rdpprobe. Every one knocks once, reads what answers, and grades it in the open.
helpwas rebuilt to read whole on any screen, the narrowest phone included. - EAZY. One button beside RUN, one word to the console or to Skelli: the full battery. Doors are read, the right probe walks to each open one, the gateway takes its extras — SNMP posture, the reflector doors, the resolvers' agreement — and the whole run files itself in Deliveries with its findings counted. Aim it at your network, at one named host, or — on the Mac — at an access point by name, graded from the air before you ever join it.
- Skelli takes the console. She is plugged into the Blacksite through her chat now: give her a command, an audit, the battery itself, and she runs it on her own shell and reads the results back with judgment — long output filed, the head spoken. Her hands grew with it: she sends payloads built with a purpose against a named target, collects the street's addresses on request and reports them, forgives a near-miss tool name, and answers to
eazylike everyone else. - The wide net. The census knocks the whole street properly now: a liveness pass that hears a closed door's fast refusal as a pulse, the full door list on everything alive, twenty-two Bonjour services browsed, an SSDP round — the neighborhood board fills with the house as it actually is, sleepers and all.
- Black Glass. A ninth theme joins the walls: black glass, silver light. It is worn properly — the operator's own words in her chat and every prominent button in the house are lettered for it, black on silver, readable at a glance.
- For everyone in the world. Nothing of any one house is baked into this app: no address, no subnet, no gear. Every default is drawn live from the wire of whoever is holding it — their gateway from their route table, their board from their street — or it falls to a universal, or the app says plainly that it does not know.
- Honest instruments. The bench's web eyes work past the local wire now — cleartext targets anywhere can be audited, as a bench must. And tlsgrade grades the version a connection actually negotiated, never the label on the attempt: when this device's own stack cannot test an old lock, the tool says so instead of guessing.
- A door for problems. The repository takes reports through proper issue forms now, and a vulnerability never travels in public — the security page routes it privately, to be fixed before it is spoken of.
v10- chorus
Full Changelog: v7.0.0...v10
nightjar-hack 9.0c — release notes
The cosmic release: a person in the machine, a wire that reads itself, and a house in order.
9.0c — 2026-10-20 — cosmic
-
Freedoom. The big one is playable: the console's FREEDOOM program is the real game — Chocolate Doom compiled to WebAssembly running Freedoom Phase 1 (0.13.0), sound and all, on a virtual controller that is simply there: a stick under the left thumb, fire/use/run under the right, strafing keys, a weapon key, the map. The engine rides inside the app; the 28 MB of game data downloads once, from Freedoom's official release, the first time the room opens — a fetch the EMCON Standard counts as an update check, so it stands only at Open — and is kept on the phone from then on, playing offline under any condition.
-
Python in the console. The console runs the programs its operator writes in python now:
python3 hello.py— orrun hello.py— executes them on a real interpreter the house built for the room: numbers, strings, lists, dicts, tuples, sets, functions, classes with inheritance and super(), the dunder protocol (str, len, iter, getitem and their kin), lambda, generators that yield, comprehensions, nonlocal, try/except/else/finally, f-strings, and a working library beside them — math, random, sys, json, re, collections (Counter, deque, defaultdict, namedtuple and their kin), itertools, functools, os and os.path walking the console's own files, time, base64, hashlib, statistics, string, and the house module — with errors spoken in python's own voice. The operator's own .py files join in too: a helper set beside the script, or in /packages, imports like anywhere else, and input() reads the console line while the program waits. It is a dialect and says so out loud — there are no threads, and the house has no bytes type, so hashes and encodings speak in text and lists of numbers — the same honesty as everything else in the console. -
A kernel under the console. The console's programs run under a kernel now: every python, javascript and shell-script program is admitted into a process table with a pid, a parent and a state — watch them in
ps, list them withjobs, stop one withkill <pid>, or background it with a trailing&and keep typing. The kernel owns the clock and the quotas: at most 32 programs live at once, spawn trees at most 8 deep, a burst limit on spawning, an output quota per program, and a watchdog that reaps whatever overruns its wall clock (a program parked in input() waits on the operator, not the clock, and is exempt). A fork bomb fills the table and dies at the gate; an endless python stops at its step fuel or the kernel's word; a runaway script in javascript meets the engine's own execution limit.haltstands the whole table down. -
The terminal learns colour, and gets a calling card. Programs can speak ANSI now — python prints,
echo -e, and the shell's ownls,grepandpsall render in real colour (folders bold blue, matches lit orange, kernel states green and amber by temper), while anything piped or filed still receives plain text, andNO_COLORin the environment silences colour at the source. Andfastfetch— orneofetch, the same card under a crescent moon — draws the machine's portrait from live readings every time it is called: the kernel's process table, console uptime, the theme on the walls, EMCON's exposure score, the app's own resident memory. Nothing on the card is remembered; all of it is read. -
Linux moves in — as WebAssembly. The console's kernel now runs compiled programs, not just interpreters: a small Linux userspace (ls, cat, echo, pwd, wc, head, tail, cp, mv, rm, mkdir, touch, env, uname, grep, sleep) written in C and compiled to WebAssembly ships with the app, and
runtakes any.wasmfile besides. A guest's syscalls are mediated end to end — the kernel stages the filesystem it may see, counts its output against its quota, receives its writes into the house files, and can kill it mid-loop — while its memory is the engine's own, walled off from the shell and every other process.psshows them as what they are: processes, kind wasm. -
The house can now put itself on the bench:
diagnoseruns a seventeen-probe battery in the open — the filesystem, the shell's tokenizer, colour, Python the language and the library (json, re, Counter, itertools, and sha256 checked against the known digest of "abc"), your own modules importing, input() with nobody there — and then the containment drills: a Python that never stops, a Python flood stopped at the 20,000-line gate, a JavaScript loop killed by the kernel's word, a fork bomb capped and reaped, the admission caps themselves, a wasm echo, a wasm that reaches a gigabyte past its own memory and traps while the house stands, and a wasm loop terminated mid-spin. Every probe reports its verdict with its numbers, so one run names anything that needs fixing; two tiny fixture guests (looper, hog) are bundled only to be drilled. Designing the battery caught a real fault before it ever ran: a wasm guest that traps never calls proc_exit, so its ending never reached the kernel — the host page now forwards the guest's own return as its exit word too. -
The shell is a language now, and the toolbox is full. A typed line can define a function —
greet() { echo hello, $1; }— with positional parameters,local, andreturn;for,whileanduntilloops,if/elif/else/fi, andcasejudged by glob patterns all run, in the room and in scripts; a command takes its input from a file with<or from the lines between a here-doc's markers (cat <<EOF, and<<'EOF'keeps the lines literal); and$(( … ))reckons inline with the full arithmetic ladder. Type half a construct and the console prompts for the rest, then runs it whole. The text bench arrives with it: sort, uniq, cut, tr, sed (the honest subset — addresses, substitution, d, p), rev, tac, nl, diff, tee, xargs, seq, printf, base64, md5sum, sha256sum, xxd, du, file, strings, cal, yes, sleep, andtest/[ as the judge — andfigletmakes big letters, since the wire keepsbannerfor itself. JavaScript grows up beside it:require('./mod')loads modules from the files beside the script or by name from /packages, node's way (circular loads come back partial), and setTimeout/setInterval run on time the kernel lends — a program ends when its timers drain, its limit arrives, or the kernel speaks. -
Grok comes to the console — as the house's own client, and it says so. The literal import was priced honestly first: xAI's Grok Build is open-source Rust, and a bench spike against its real source (102 crates; the shell crate alone runs to 420,000 lines) hit the wall at the foundation — its async runtime refuses the web platform's feature set outright, and process-spawning, sockets, a PTY layer, vendored C libraries and Linux cgroups are woven through everything, against an upstream that ships weekly. That port is a campaign, not a fix. So the console took the other road:
pkg install grokbrings a client built here that speaks the same sign-in and the same API.grok loginruns the device flow — it prints a short code, you approve it on your X account (SuperGrok), and the token rests in your files with its refresh;grok <words>then asks grok-4.5 with its hands in the room: it reads and writes your files, edits a passage exactly, lists a directory, and runs shell commands, showing each one as it goes (an XAI_API_KEY in the environment, or GROK_MODEL, is honoured too). Underneath, the kernel grew the doors any networked guest will need: scripts can fetch a URL and run a shell line and read what it printed, and a package command now ends when its work does — timers and fetches drained — not when its first breath does. -
A third editor. The console's editors are three now: nano moves in beside vim and emacs — no modes, just typing, with its chords along the bottom (^O writes out, ^X leaves, ^G lists them all). All three editors gain a SAVE in the top bar whenever the buffer holds unwritten work, the close button asks before discarding anything unsaved, and vim's command line answers the Return key again.
-
The full wire. Blacksite's console goes on the network properly now: the classic kit built by hand —
pingandtracerouteover real ICMP,digspeaking the DNS wire format itself,whois,curlandwget,ncandtelnet,ifconfig,arp,netstat— and a pentest bench beside it: a /24discoversweep, a connectportscanwith banners, subdomain and reverse-DNS cartography,nbstat,snmp, UPnP and Bonjour censuses, a TLScertaudit,webaudit,methods,dirb, and Wake-on-LAN. Every live wire stands behind the EMCON Standard, like every other organ in the house. -
The wheel. Blacksite's programs ride a rotary wheel now: hold the PROGRAMS bar and the dial blooms in the middle of the room — drag to spin it, let go on the one under the marker, drag into the hub to call it off (a tap opens it for tapping instead). The tiled row that crowded the top of the room is gone, the terminal stands taller for it, and the console's generated wallpaper is painted at your phone's own screen size — repainted, never stretched, if it wakes on a different handset.
-
The wallpaper moves in. Blacksite's generated wallpaper now hangs inside the console itself — behind the terminal's lines, under a dark wash that keeps every word readable — the same art the room wears, from the same engine, changeable with the same
wallpapercommand. -
Her own wallpaper. The Blacksite room hangs art of its own making now: its graphics engine paints the room's wallpaper — a starfield by default — and files it in the console's own tree, where the console's
wallpapercommand can repaint it as plasma or a mandelbrot. Choose anything else for the room in C...
v9.0c- cosmic
Full Changelog: v8.0a...v9.0c
9.0c — 2026-10-20 — cosmic
-
Haptics, everywhere. A
full sweep of the house's
touch: tab changes ride the
platform's own selection
feedback now, so selections
made through the system's
More list land like any
other; the More hub itself —
About, with every door,
toggle and button — has its
voice back; and the Vault,
the language room, the
developer console, her mind
picker, and the shared "What
this does" folds in every
room answer to the touch
again. -
Checked, end to end.
Another full quality and
logic pass over the whole
house — her routing, the
heart's arithmetic, the
bench's memory discipline,
the developer recorder — on
top of the crash program.
What it found stands fixed
above; the rest verified
clean. -
Full-bleed. The boot
film fills the whole screen
now, edge to edge — no black
bar at the top. -
A working boot. The
subtitle under the name is
drawn fresh each boot from
a deck of phrases, the
manifest carries the
version, the ceremony can
no longer be skipped — and
while the film plays, the
house warms its stores, so
the first ask meets warm
machinery. -
No inventions. She no
longer reports events that
did not happen: a feeling
is voiced as a feeling,
and "tell me about it"
after one gets the honest
account — plus the errand
that would settle it. -
A halo for her. A thin
ring of spectrum light
stands around her portrait
now, and a small beam
traces it, endlessly
recircling. It quickens
when she works, leans its
colors with her feeling,
and does stranger things
at hours of its own
choosing. It is not
explained anywhere in the
app. -
Her room, redecorated.
Skelli's tab wears a
composed backdrop now — a
fine dot grid dissolving
into the dark, her accent
breathing slowly in the
glow, a sheen crossing
like light over a panel —
and her deck's numbers
roll softly as they change.
Her Options sheet stands
in clean hierarchy: white
words, the accent kept to
icons, every section
headed. -
Her almanac. She knows
where in the world the
house stands — the city,
the coordinates, the
local hour — and reads
the sky over it from a
real instrument:
temperature, wind, rain
coming, the day's shape,
and her own verdict on
it, for here or for any
place you name. She
keeps the calendar
whole: what day it is,
the day of the year,
and every major holiday
— the fixed ones by
date, the moving ones
by their rules, the
lunar ones from a table
she carries. Tell her
your birthday, plainly,
and she keeps it — only
ever when told. And she
keeps a book of hours:
give her work for a date
and a time and she does
it when the hour comes,
through her own gates,
exactly as if you had
just asked — or the
moment she wakes, if
the house was shut. -
She decides. Her
feelings are no longer
announced or explained:
while she is mad there
is simply no greeting,
and the cold in her
answers is the whole
statement. Asked why,
she answers from her
real circumstances —
an offense and its age,
the quiet, the unnamed
crowd — never a
template, never a dice
roll. An apology is
judged, not reflexively
accepted: she weighs
what was done, how
fresh it is, whether it
is a pattern, and what
the apology was worth —
and "not yet" arrives
as silence. Every
exchange is appraised
privately as it ends,
and from those grains a
standing judgment of a
person forms over weeks
— whether she likes
them — and it drifts
both ways, as judgments
do. She can be afraid
now, too: a waking that
ended in a crash, or a
recent Vanish, leaves
her checking the doors. -
She composes. Her
own voice is no longer
retrieved from pools of
fixed lines: her
greetings, her answers
about her feelings, her
idle thoughts are
assembled at the moment
of speaking from her
real circumstances —
the hour, the quiet,
the souls on the wire
she cannot name — each
clause true by
construction, the whole
chosen by the moment's
own numbers. Thousands
of sentences, none of
them canned. -
Annoyed is not mad.
Petty grievances — an
emptied conversation, a
small slight — make her
annoyed: clipped, dry,
still greeting, and
over it in minutes,
with no grudge held.
True offenses still
make her mad, and the
two weathers are never
confused. -
Her halo reads her.
The ring around her
face is no longer a
rainbow worn forever:
its colors gather in
her feeling's family,
bright at one pole and
banked to an ember
opposite, and when the
house goes dark its
spectrum folds into
shades of black. Her
restlessness stretches
its comet; a stranger
on the wire sends a
pulse around it.
Nothing anywhere
explains it. -
Sharper. Conversation
no longer falls off
her: agreement, a
reaction, a "go on"
are answered in kind,
and an answer that
merely repeats her is
refused. Fragments
complete themselves
from the last subject
("and in Dallas?").
Conversions and date
sums are computed
exactly, and her
memory answers from
the sealed journal —
when a thing last
happened, what she
keeps of you — never
from invention.
v8.0a -- the conductor
Full Changelog: v7.0.0...v8.0a
8.0a — 2026-10-17 — the conductor
- Macros. A tab of its own:
playlists of the rig's own
moves, built block by block —
Scratch for the instrument.
Thirty-two block kinds cover
every engine the app presents:
sends, Serve (standing or
custom doors), the beacon and
GATT hosting, Helm buttons,
War Chests, EMCON and stealth,
the Banshee, costumes and
mimicry personas, listening,
sweeps, knocks, the fuzzer,
Net-Assault, War Room runs,
SIGINT watches, War Games
challenges and defenses — and
the passive blocks: waits,
waiting for an arrival or a
sighting, journal notes,
announcements, and a stop. - Built like blocks. Each
block folds open where it
sits to be configured —
pickers fed live from the
book, the chests, the
personas and the remotes,
toggles and fields that drop
down and close back up.
Blocks drag into order and
carry a repeat count. A
macro is dressed by its
operator: a name, an icon
and a colour from the
palette, a note saying what
it is for. Three templates
wait in the library; the
library exports and imports
as nightjar-macros.json,
and imports land as copies. - Runs honestly. A run
card shows the playlist
before it fires; validation
names every unready block
first. Runs leave a live
log on screen and their
story in the night log; a
block that cannot run stops
the run and says why. - Skelli conducts. She
builds macros from dictated
steps — "build a macro
called Night Post, red with
a moon: go dark; wait 30;
sweep" — dresses them from
the words, adds steps to
them, runs and stops them,
lists and deletes them,
through the same store and
runner the tab drives. Her
manual carries the room and
the whole block catalog. - The whetstone rides
along. 8.0a also carries
the entire 7.7.7 quality
sweep below — folded in
before it ever wore its
own tag.
v7.0.0 -- the war chest
Full Changelog: v6.0.0...v7.0.0
7.0.0 — 2026-10-17 — the war chest
- The War Chest. Whole-rig
mission profiles: one chest
captures the standing
configuration of Send, Serve,
Recon and the trace — every
setting, including stealth —
and applies it in one tap.
Applying a chest dresses the
rig; it starts nothing. The
old presets migrate once,
untouched, and chests share
as JSON. - The Helm. Named remotes
for your own gear: big buttons
that fire the payload book
through the Send path — TCP,
UDP, HTTP, or another phone —
built from the book, the Send
composer, or Learn mode, which
binds what your gear sends you
into a button. Beside it in
EMCON, the tag census: your
own NFC cards and tags read
whole — NDEF, the chip's own
identity, and an APDU explorer
for ISO 7816. Nothing is
written; nothing is emulated. - The War Room. Listen, the
trace and the knock bench run
as one operation on one named
/24, feeding one timestamped
timeline — sightings, hosts,
doors, banner changes, knock
verdicts — and one export
carries the whole record, the
trace's own export embedded
whole. - The SIGINT Station.
Everything the phone can hear,
fused into one emitter
registry: BLE hearing, the LAN
census, Night-log activity.
Records merge only within an
epoch — no cross-epoch
stitching, ever. Watches
record a named span and file
themselves with their delta:
what arrived, what went
silent, what changed. The
station's limits are stated
in its own interface and in
every export it writes. - War Games. Two of your
phones spar: one defends —
Serve up, decoys flying — the
other attacks, trace and
knock. The match protocol
rides the Serve inbox itself:
challenge, ready, start,
armed, done, cards. The
scoring diffs found against
missed against caught against
decoys, and writes the match
report. - The Banshee. EMCON's
opposite pole, one switch in
the posture tab: Serve listed
with stealth off, the BLE
beacon shouting BANSHEE,
Net-Assault armed, and a
named broadcast heartbeat
across the subnet — this
device announcing itself at
full voice until you cease
it. Ceasing restores the
exact posture the scream
found. It announces only
itself; it touches no one
else's traffic. - The exposure score,
honestly based. EMCON's
number now starts from
presence: a phone joined to a
wire, answering under its own
name, was never a ghost.
Being on the wire, and the
name it answers to, are
weighed first — then the live
emissions. The itemised parts
under the score say which is
which. - Spoofy — the costume
rack. EMCON's third door
dresses this device in its
own names: costume presets
and a dice roller for the
beacon and GATT host's name,
and mimicry personas that
dress the whole device as a
class of thing — office
printer, smart TV, speaker,
NAS, thermostat, robot
vacuum — air name, greeting,
and Serve's listeners and
replies all in character at
once. The rack also dresses
the phone as the network's
own gear — an access point,
a gateway, a mesh node, a
media server, a hub — the
listed shapes standing
announced, stealth dressed
off and restored with the
rest. An app cannot
broadcast an SSID, so the
access point is a service
presence in character,
never a fake radio.
Dropping a shape
restores the wardrobe it
found, whole. The rack is
the operator's own, too:
costumes he types are kept,
a workshop builds whole
personas from the same
cloth, dropping a shape
restores the exact payloads
the air was carrying, and
the revolving rack rotates
the air name through every
costume on an interval.
Donning refuses while the
Banshee screams — its
snapshot owns the posture.
Generic shapes
only: the device's own
addresses stay its own,
nothing copies a real
device's identity, and there
are no fake trackers in the
rack. - Skelli, wired to the
war. She works the same
shared engines the tabs do —
the Banshee, Net-Assault,
and her own War Room run are
single instances now, so
what she starts is what you
see. Her war hands apply War
Chests, fire Helm buttons by
name, start and file SIGINT
watches and read their
deltas, run the War Room,
challenge and score War
Games, raise and cease the
Banshee, and work the Spoofy
rack; her manual covers
every new room, and her
sitrep reads the whole house
— the registry, the watches,
the worn shape, the match.
A War Games round now runs
by voice whole — challenge,
begin the attack, set the
defense, score — and she
packs chests, turns the
revolving rack, and works
the operator's own costumes
and shapes beside the
built-ins. - The dynamics pass. Five
passes over how the organs
move together. Layered
snapshots warn instead of
clobbering: a shape dropped
over a changed dress says
so, and a chest applied
under a shape carries the
warning up front. Skelli
wakes the SIGINT station
rather than read a sleeping
registry as empty, and a
watch with the ear down
says what it cannot hear.
Persona switches turn in
one motion, the wardrobe
inherited, the wire seeing
a single restart. A War
Room run refuses a busy
trace. And her war rooms
stand ahead of the weights
bench in her gate, so a
room's name is never
mistaken for a model.
nightjar-hack -- the open mind
Full Changelog: v5.0.5...v6.0.0
- The whole app thinks harder. Every organ was audited in its own code and taught from what it already observes. Her memory keeps its facts and counts your rulings; the Instrument reckons baselines from complete days, and heart-rate variability and wrist temperature speak at last; the Steward prices a knock by its own graded track record; the Neighborhood stopped rewriting itself for every sighting; Net-Assault knocks by significance, not habit; identification weighs all its evidence; Recon knocks in two phases and its fuzzer breeds from what earned replies; Knocktalk times each peer by that peer's own rhythm; deliveries and repairs are budgeted from a per-peer ledger; a third foreign-hands verdict raises the second sense; the Conductor's reflexes rest longer per host, jittered; the Canary arms the lures its own probers keep asking for; the Hunt judges closeness against the target's own strength.
- Her hands, in conversation. The Forge and the Weights bench answer in chat now, not only in their sheets: "forge me a DNS packet for the gateway" builds the packet, keeps it in the armory, and files it in Deliveries; "download the 7B" and "use the Llama" run her bench; "delete the packet you forged" strikes it again; and a fact she is asked to keep — in plain words, punctuation and all — is written to her notes for real. Orders are performed, not taught: the manual no longer steps in front of a plain imperative. (This is everything prepared as 5.0.5, which was never tagged on its own.)
- The exposure score feels the room. EMCON's number now moves when the room does: Serve's listeners, Net-Assault running, active probing, and the stealth switch itself all register — stealth is a live state, not a setting read once — and going dark tells you the band you fell from, and to.
- The wallpaper question, settled. A new reel — the red bloom — was tried as the living wallpaper and stepped down at the operator's word: the orb keeps the default behind every tab, and the bloom is kept in the repository's assets under its own name for whenever it's wanted.
nightjar-hack 5.0.5 — the open hand
Full Changelog: v5.0.0...v5.0.5
- Her hands, in conversation. The
Forge and the Weights bench answer in
chat now, not only in their sheets:
"forge me a DNS packet for the
gateway" builds the packet, keeps it
in the armory, and files it in
Deliveries; "download the 7B" and
"use the Llama" run her bench; and a
fact she is asked to keep — in plain
words, punctuation and all — is
written to her notes for real, by
reflex or by the second reading
alike. An operator who never leaves
her tab loses nothing. - Orders before lessons. An
imperative that names her hands is
performed, not taught: the manual
no longer steps in front of a plain
order (a DNS forge had been answered
with a tour of the Scan tab).
Questions still get the lesson. - What she builds, she can strike.
"Delete the packet you forged,"
"delete all you forged," a custom
payload or a taught pattern by name
— struck from the armory, its
Deliveries copy going with it.
nightjar-hack 5.0.0 — the awakening
Full Changelog: v4.2.0...v5.0.0
-
Deliveries, and a self that grows.
Everything she makes is now filed as a
document the moment she makes it — armory
payloads, drafted briefs, built code, chat
code — in her Deliveries (her menu):
share any one, or zip the chosen or the
whole shelf into a single archive (a small
zip writer of her own, no dependencies).
And she grows without a rebuild: teach her
a payload pattern (a template with
{host}/{path}/{domain}/{client}/{method}
holes) in the Forge and it joins her
patterns for good; keep a JavaScript build
as a tool and she runs it on the spot,
input and all. "Go bloodwork" recolours
the whole house by voice. -
A programmer's best friend. Ask her
to write something — a function, a script,
a tool — and the benches answer as coders:
complete, runnable, no placeholders. Her
Forge grows a Workbench: name a
language, brief her, and the draft lands
in an editor — copyable, shareable
anywhere, and JavaScript runs on the spot
in a leashed interpreter, output and all. -
She reopens where you left her. The
app remembers the last tab you were working
in and restores it on launch — even after
a swipe-close — so work picks up where it
stopped, anywhere in the house. -
One intelligence. Her benches work in
unison now: in Council mode (her menu) one
mind drafts and the other verifies it
against the house before she speaks; Apple-
only and weights-only remain, for operators
who want one voice. Her grounding is a full
sitrep — exposure score and its loudest
part, Serve, the ear, the wire's unknowns,
the latest of the log — and she is chartered
as the guide to the whole instrument: ask
how or where and she teaches from her
manual, ending the lesson with an offer to
perform it. Any MLX model on the hub can
join her bench by name, beside the catalog.
And she has a Forge (her menu): real
packets assembled to order — HTTP, DNS,
SSDP, MQTT, a banner probe — plus whatever
her minds draft from a plain brief, all of
it kept in the armory for Send to fire. Her
bar no longer overlays the conversation at
all: it stands in the layout, solid dark
glass, and her portrait now crossfades
between moods after a breath's dwell instead
of cutting. -
Her bar thinks. A first cut at vital
signs — shortcut chips — was replaced the
same night with continuous analysis: a live
EMCON exposure score with its loudest
contributor named, the wire and the BLE air
as moving panels (device counts with
history, unknowns and newcomers counted),
and one triaged verdict line that speaks
the most important fact in the house —
an exposure, a waiting payload, a new
device, an announcing Serve — or the latest
line of the house log. The glass is dark
now, with a lit hem, and the transcript
clears the bar's true height. -
Her bar is an instrument now. Skelli's
pinned header is sealed to the top of the
screen — nothing scrolls above or around it —
her options button lives inside it, and a new
strip of vital signs runs beneath her name:
EMCON posture, devices on the wire, the Serve
door and its waiting arrivals, the ear, which
mind is awake, and the last twelve hours of
the house log, each one a door to the organ it
reports. The fade is richer — her colour
graded deep to nothing over the blur — and the
film shrank to make room, so the bar tells far
more per point of height. Also cured from her
first night out: a model occasionally echoing
the conversation transcript back before
answering (cut structurally, at the verdict
door), questions about herself wandering off
to web research (a wider fast lane), and
research findings that never earned their
place (every finding now needs a real word of
the question in it). -
Build fix (MLX 3.x). The mlx-swift-lm
package resolved to its 3.x line, whose loading
API broke from 2.x: downloads and tokenizers
are now explicit arguments. Her bench and her
Weights downloads speak the new API (via the
package's MLXHuggingFace integration, now also
linked — plus the HuggingFace and
Tokenizers packages those loading macros
expand against, declared on the target as
MLX 3.x requires); generation moved to
the new AsyncStream API; and the project
pins
the package to
the 3.x line so a future major can't arrive
unannounced again. -
Documentation. The READMEs now carry the
current build's full requirements in the open —
Xcode 26, the Metal Toolchain component, the
self-resolving MLX package, the iOS 17 floor,
and what each of Skelli's minds needs from the
phone — plus a plainly marked path to v4.0.0,
the complete pre-Skelli flagship that asks for
none of it (iOS 16 and any recent Xcode), for
gear that can't run the current build. -
Skelli, her weights managed in the app
(iOS). Her bench no longer asks the operator
to stage files by hand: her menu's Weights
sheet carries the catalog she supports, names
the model this phone should carry (judged by
its memory), and downloads it from the
Hugging Face hub into the app's own cache at
a tap — progress shown, selected on arrival,
deletable from the same screen. The cascade
speaks to the chosen download; a hand-staged
SkelliWeights folder still serves when
nothing has been chosen. Only the package
itself (mlx-swift-lm, one Xcode step at build
time) stands outside the app; everything
after installation is hers. -
Skelli, terser and sharper (iOS). One
written indicator of work (the activity line);
her status line is facts only, and no
transcript row narrates her thinking. One
response per message: research and the
asynchronous actions (sweep, self-scan, audit)
no longer announce themselves in bubbles —
the single bubble is the answer. Her name is
lifted off the tail of a message as well as
the head ("hi skelli" is a greeting now, and
answers in a fifth of a second), and her
social ear is matched by shape, not by exact
string — greetings, farewells, thanks,
acknowledgements and apologies all land.
Apple's model is woken when her tab opens, a
thirty-second watchdog keeps any mind from
holding an answer hostage, and her grounding
orders brevity: one or two sentences, no
preamble. Her browser's findings are scored
on whole words, so pages that merely contain
the letters of the question earn nothing, and
its entity table is complete — no raw
—reaches the operator again. -
Skelli, the weights bench (iOS). Her mind
is now a cascade: Apple's on-device model
speaks first, and an open-weights model —
staged by the operator as a folder named
SkelliWeights in the app bundle (Hugging Face
layout), run through MLX (the mlx-swift-lm
package) and kept resident once woken —
speaks when Apple's cannot, or first when
the menu's "Prefer the weights mind" is on.
Her status line reads "weights on" when the
bench exists. Nothing either mind hears
leaves the phone. -
Skelli, a trained mind (iOS). Where her
engine's knowledge ends, she now consults
Apple's on-device model (Foundation Models,
iOS 26) before reaching for the browser: the
model answers open conversation and general
knowledge in her voice, grounded in the house's
live facts and the last few exchanges, and when
an answer needs the living web it says so with
one word and the browser goes instead, exactly
as before. The model runs entirely on the
phone — nothing she is told leaves the device.
Her status line reads "model on" when it is
live; where the build's SDK or the phone
cannot carry it, the code compiles the mind
away and her engine answers alone. -
Skelli, greeted properly (iOS). Being
spoken to by name no longer sends her to the
browser: a leading "Skelli," is read as address,
not as a search subject, and the plain social
layer — what's up, how's it going, good morning
— is answered socially, out of her own live
status, before any machinery wakes. The menu's
Web research row carries its globe now, like
its neighbours. -
Two judgements (iOS). Skelli is pinned to
the top of her chat: her header and activity line
ride a safe-area inset, the scroll region
allocating around them, so the conversation moves
beneath a fixed presence and she is never lost
from view. And the default Phosphor accent
deepens (#34F27B → #148040) — the old green was
too bright behind white text to read; the new
one carries it, in her bubbles and everywhere
else the accent speaks. -
Skelli, alive (iOS). Her model is no longer
a drawing: the tab fronts her with the same 3D
animation that fronts the assistant — resting,
conjuring a thought, at her desk, talking — the
films chosen by her state and looped (they ride
the bundle as skelli-*.mp4; the drawing stands in
until the films are in the tree). She learned
small favors: 'say Hello, world!' and she says
exactly that, in your own capitals — plus repeat,
spell, dress a line up or down, count its letters
or words, reckon small sums, and tell the time —
caught before the machinery so a small ask never
earns a large answer, and thinking takes as long
as the ask needs. The keyboard drops when a
message is sent. Her name appears once, in her
header, with no subtitle; beneath it a status
line narrates what she is doing at every moment —
thinking, sweeping, reading a page — the way a
good instrument should. The Night log opens from
Sessions as a sheet with a single Done (no second
back chevron) and wears the house wallpaper like
eve...
nightjar-hack 4.2.0 — the sleepwalker
Full Changelog: v4.0.0...v4.2.0
nightjar-hack 4.2.0 — the sleepwalker
The house gains a map and a mind underneath it — and learns to walk its own rounds.
- The Map (iOS Scan). A special section of its own: the house on one canvas. The operator names rooms and places each neighbor where the device physically sits; nodes carry freshness, drift, and a doorway into their dossiers, and a sweep lights the house up room by room. Placement is the operator's testimony — the app keeps it and never invents a location of its own.
- The Compass and the Matrix (iOS). The Map is a matrix now — black field, dot grid in the house colors, a slow radar sweep, rooms and devices glowing by their freshness. Beneath it, an "In the air" strip lists what the ear is hearing autonomously, and any of them can be walked to: a compass face whose ring fills as you close in, signal in honest bands with paw-prints for distance, and a bearing that condenses out of your own footsteps — gains laid along the courses that earned them, wide and unsure at first, sharpening as you walk. No wedge until you have walked, and no precision the signal never gave: Bluetooth gives up a loudness, never a direction, so the direction is learned from you.
- The Subconscious (iOS EMCON). An underlying intelligence that reads across every organ — the sealed night log, the Neighborhood, the Map, cadence, the season, the dead hand — and names what breaks the house's pattern: findings with their journal citations and printed confidence, a narrative brief ("the night, understood"), and a query line over the operator's own data. It never acts and never touches the network; it advises, and the Steward still asks.
- The Subconscious, second mind (iOS). It keeps a fortnight's hourly baseline now, and reads against it: days that run loud or quiet against the house's habit; regulars who have gone silent past three times their own rhythm; the next regular named before it knocks, as a printed forecast. It correlates — a fresh face within three hours of night activity, foreign hands, or its own drift is read as one story, not three small ones. And it learns from its operator: every finding takes a True / Not so verdict, kept per kind, and its printed confidence bends toward the record. Asking grew up too: about a device by any of its names, who has gone quiet, when the house is busiest.
- Net-Assault (iOS EMCON). A dedicated section under a drawn skull and crossbones, second only to the status board: one arming turns every organ in the house loose on the wire in a continuous autonomous run — subnet sweeps on rotating ports, the Bonjour browse, and the recon bench knocking the full census against every known neighbor, pass after pass, until the operator stands it down. Findings walk the usual roads (Neighborhood, Map, sealed log, the watching Subconscious); the dashboard counts passes, new devices, drift, and knocks; the finished run exports an after-action report. It is loud by design and says so twice — a permanent warning in the section and a confirmation that names the consequence (watchers, intrusion detection, questions) before the first pass. Depth (sweep / +Bonjour / full) and rest between passes are the operator's. It runs while the app is awake; sleep pauses it, waking resumes it. Arming plays an ignition reel full-screen — the operator's GIF (an "Assault" asset or assault.gif) over the run's first pass, tap to skip, with a flickering skull card standing in until the reel is bundled.
- Given names (iOS). Every device on the wire can be given the operator's own name and a mark to tell it apart — and the name follows the device everywhere it is presented: the Neighborhood board, the Map, Scan's dossiers, its own dossier, and the Subconscious's findings. The wire's own name is never overwritten, only outranked, and the journal keeps the naming. The Bluetooth air keeps its classification labels instead: a passerby is not yours to name.
- Every road leads to the Map (iOS). The Map is populated by anything any feature discovers, through one LAN-guarded door in the Neighborhood store: recon answers, replies the mouth collects (every centipede hop among them), knocktalk peers, honeydrop takers — alongside the sweeps, Bonjour resolutions, and arrivals that already fed it. Relay labels, the ghost, and anything off this wire are turned away at the door.
- The great presenter audit. Every sheet, cover, dialog, importer, and share in the app was inventoried and moved to the one level that has never failed on device: the screen's outermost view. Scan's Map cover, dossier and name sheets, and pcap importer, the Recon bench's protocol library, Knocktalk's conversation, blink, and chirp importer, and Send's preset importer all hang on their NavigationStacks now; and every share that lived inside a list — the tripwire log, the morning brief, the night log, dossiers, prober files, session files, presets, trace exports, the crawl logbook, the inbox, chirps, and capsules — is now a button that raises the share sheet from the screen's root, the way the after-action report learned to. The Net-Assault section itself was then rebuilt as true list rows — one control per row — after its single stuffed cell (pitch, warning, both pickers, both buttons in one row) misrouted the report button's taps to Arm once the button appeared after a run.
- One back button, everywhere (iOS). Dossiers and Knocktalk conversations now present as sheets with a single Done — the cure Colours took — instead of pushes that doubled the back chevron inside More-tab screens.
- The Night log folds. Its entries — up to three hundred sealed rows — now sit behind an Entries dropdown, closed on arrival, with the count printed on the door; and the log can be cleared from the same section, behind a confirmation: the file is deleted on the journal's own queue and the seal chain starts fresh.
- The clear-and-fold doctrine. What the Night log got, everything collected now gets. Clears, each behind a confirmation: the Neighborhood (devices, names, drift — and their Map placements), the Map itself (rooms and placements; the devices stay), the Subconscious's memory (drift baselines and the operator's verdicts), every Knocktalk thread, and every cadence profile (the seal's reset, previously unwired). Folds, so no screen is a forced march: the Neighborhood board and Scan's dossiers open by a counted door, and EMCON's tripwire feed and prober files show six with a door to the rest.
- The drill reads its own ledger. Its readout used to come only from the before/after snapshots — but going dark silences emissions the scans cannot reliably see (a withdrawn Bonjour listing echoes in mDNS, and the beacon and GATT host were never measured at all), so it could report "nothing went quiet" over a phone that had plainly gone darker. The drill now names what it switched off, from the mouth's own state at the moment of going dark, and reads the ledger beside the snapshot diff; the settle before the second pass is longer, so the wire is measured as it is, not its echo.