AGnosis

The AGnosis mark: an orange duck with a yellow beak and a teal body, on a dark disc with two lightning bolts
The mark of the studio's least serious product. The parade draws its own duck, in the characters below.

A hotkey, a parade, and nobody's business

The studio's joke that ships: press one hotkey and every open browser minimizes while a fullscreen parade of ASCII ducks claims the screen.

The parade arrives before the questions do

Someone walks in. You have about a second. AGnosis is that second.

Press the hotkey and two things happen at once: every open browser window minimizes, and a borderless fullscreen window of marching ducks takes over the monitor. Eleven of them, two big and nine small, a band of grass, five balloons on ropes that swing like they are being paid to.

What was on your screen is nobody's business but yours. AGnosis does not ask, does not record, and does not care. It just really enjoys ducks.

Annoying Goods builds writing tools. It also built this, because the studio holds that a joke that works is a product, and this one works.

A word about the name

The app was built under the working name ducks, which described it perfectly. Studio names carry an ag somewhere, so the ducks got religion: gnosis, the knowing of things. The ducks know nothing. They march.

The working name still lives in the commands and the config folders, which keeps the rename honest. You are reading the sales page; the ducks have not been informed.

One chord, instant ducks

What the hotkey actually does

The default chord is A+G+Shift+Space on Windows and Linux and Ctrl+Alt+Shift+Space on macOS. Press it and the parade covers the display under your pointer, or the primary one if you pin it there. Press it again, or press ESC, and the parade packs up.

AGnosis finds browsers by process name against a built-in list of more than twenty of them: Chrome, Edge, Firefox, Brave, Vivaldi, Opera, Tor and friends, Thunderbird included. You can add your own program names in the config, and on macOS the match also speaks bundle identifiers. Browsers only: the editor, the terminal and the spreadsheet stay exactly where they are.

Minimized, never closed

Browsers are only ever minimized. Nothing is closed, so no tab, no half-filled form and no unsaved work is ever lost. The parade is a curtain, not a shredder.

By default the browsers stay minimized after the parade ends, because a screen that snaps back open is exactly the moment the joke exists to prevent. If you would rather have your windows restored automatically, one line in the config makes the restore polite. The ducks will not judge you. Probably.

The parade itself

Eleven ducks and a physics problem

The scene is ASCII art the way a cathedral is a pile of stones: a native fullscreen window, a grid of character cells, a simulation underneath, drawn through your GPU. The two big ducks lead, nine small ones follow, and the five balloons hang on ropes with real pendulum physics, wobbling through a hundred and twenty substeps a second.

The sky is a gradient you can set by time of day. Up to three backdrop pictures scroll behind the parade at their own speeds. Every duck can wear a hat. Each duck can carry a personality of its own, bob, gait, phase and colour, and the one duck marching slightly out of step will be the one you love most.

That is the small duck, in the characters the parade draws it in. Nothing here is a picture of a duck; it is a duck, made of characters, walking on a grid of cells.

The weather

The parade has weather, seeded and deterministic, so the same storm always falls in the same order.

Rain
Blue waves fill the gaps between the grass blades, and splashes bloom around every duck's feet.
Snow
The ground turns white and one chosen duck falls on its backside. Every duck behind it stops, in order, and keeps marching in place. The rhythm survives.
Wind
Every grass blade leans the other way.
Lightning
The tall blades flash, and the whole parade freezes for a second and a half. Then it resumes as if nothing happened.

The ducks notice you

Click a duck and it hops, grimaces and clucks. Shift-click one and it stops dead, the ducks behind it stop too, and the ones in front keep marching; the held duck keeps walking on the spot, because the rhythm is a clock, not a video.

Every sound is synthesized as it happens. No audio file ships, none is loaded, and a machine with no sound card simply marches in silence, unbothered. A note track can be composed in the editor and played in step with the marching, because a parade deserves a soundtrack.

Make the parade yours

Any picture becomes a balloon

Drop a picture into the balloons folder and a watcher inflates it without a restart. Type its name on the parade's own input line and it joins mid-march. Or point the command line at any image on disk. PNG, JPEG, GIF and BMP all work: the picture becomes ASCII art, mounted on a rope, and the next carrier duck walks it across the screen.

A message of your own can march above the grass, in the block font, fading out after eight seconds or staying forever if you cannot let it go.

Draw your own duck

The D+Shift chord opens the editor, and the D is for ducks: nineteen tools, eight colours, a canvas of character cells. Draw a duck, a balloon, a grass tile or a decoration, then assign your art to any of the sixteen parade slots, from the two leads to the five balloons.

Undo works in whole strokes, not single cells, and a draft of the drawing is saved a second after you stop, so even a crash costs at most one second of art.

Send a parade to somebody

The parade is a pure function of a few numbers, so it can be written down and sent. One command exports a single self-contained web page, about 650 kB for a twenty second loop, with no network, no assets and no fonts, that opens anywhere and can be paused and scrubbed. The same command writes an animated GIF instead, or a package of your drawn art that another machine can import whole.

One binary, no leash

Plain files, live reload

Everything lives in one config.toml beside the balloons folder. Edit it while the parade runs and the change lands on screen within a second, no restart. A settings panel does the same with clicks instead of typing, and every write is surgical: your comments and your own keys survive byte for byte, with a backup kept beside the file.

No account, no cloud, no subscription, no telemetry. The parade fetches nothing from anywhere; your machine is the whole internet the ducks need.

A quiet counter can tally the days, the parades, the streaks and the achievements, and the achievements are listed in a plain file, so nothing stops you from awarding yourself one.

Open source, in Rust

AGnosis is a Rust workspace under the Annoying Goods Open Source License with Ethical Restrictions, with the simulation in a pure platform-free core and a second front end that runs the same code in a browser tab, so the web parade cannot drift from the native one. The suite stood at 895 tests on Windows at the last count, and the release gate renders the parade headless twice and demands the two runs be byte-identical.

Where it runs

The release pipeline turns one version tag into three packages, one per desk.

Three desks, three packages

One self-contained binary per platform, with the font embedded inside it, so there are no runtime assets to install.

What the release pipeline builds for each platform
Platform Package The honest footnote
Windows, x86-64 a portable zip a GUI binary: double-click it and no console window ever flashes
macOS, Intel and Apple silicon a universal dmg unsigned, so the first launch needs a right-click Open; the chord asks for Input Monitoring, and a menu-bar trigger works with no grant at all
Linux, Debian and Ubuntu a deb package lands on PATH with an application-menu entry; it speaks X11, and a Wayland-only session needs XWayland

Status

The parade is out of the forge

AGnosis is at version 0.8.0. The packaging is real, the tests are green, and the Windows archive is on the download page: one self-contained binary, the licence inside the archive, nothing to install beside it.

The macOS disk image and the Debian package come out of the same release pipeline and are listed on that page as they land. Tell the studio what the first release still needs on the request a feature form, or report what the ducks broke on the bug report form. The labs page shows how experiments graduate.