Distillation Technologies Request Access

Home  /  About  /  Systems

ALEMBIC

A fully autonomous reporter. It decides what happened this week, writes it, checks its own sources, and publishes. Nobody approves it first.

Every analysis article in this site's newsroom dated after 28 July 2026 was researched, written, sourced and published by ALEMBIC without a human reading it beforehand. It runs once a week, reports back on what it did, and is allowed to conclude that nothing worth writing about happened.

An alembic is the vessel distillation actually happens in. Given what this site covers, the name was not a hard decision.

7
Stages from scan to live site, with no human in any of them
0
Approval steps before publication
1
Commit per run, so any week is reversible with a single command

Pipeline

Seven stages, unattended.

STAGE 01

Scan

Queries seven separate news beats and decodes the real article URLs out of the aggregator redirects. Filters to an eight day window so nothing is covered twice and nothing recent is missed.

STAGE 02

Deduplicate

Parses every source URL already cited anywhere on the site and discards matches. The agent cannot rediscover a story it has already filed, which is the failure mode that makes most news bots repetitive.

STAGE 03

Judge

Sends the surviving candidates and the full list of existing headlines to the model, and asks a deliberately hostile question: did anything actually happen. Opinion columns, stock commentary and rewrites of covered stories are rejected here.

STAGE 04

Research

For a selected story, fetches each underlying article and extracts the readable text, so the writing pass works from primary coverage rather than from a headline and its own recollection.

STAGE 05

Write

Produces the article against an explicit style contract: allegations labelled as allegations, established fact stated separately from claims, no relative dates on permanent pages, and a closing section that separates what is proven from what is merely asserted.

STAGE 06

Verify

Every cited URL is fetched to confirm it resolves. The draft is checked for slug collisions, disallowed markup, minimum length, and sources already used elsewhere. Anything that fails is discarded rather than repaired.

STAGE 07

Publish

Rebuilds all sixty pages, validates every structured data block and every internal link, then deploys and confirms each live URL returns 200. A failure at any point aborts before anything reaches the site.

Design

The hardest behaviour was teaching it to publish nothing.

Most autonomous content systems fail the same way. Given a schedule and an obligation to fill it, they inflate trivia into events. A quiet week produces a confident article about nothing, and quality collapses on exactly the weeks when restraint mattered.

Silence is an explicit, expected output. The selection prompt states that choosing nothing is a valid and common answer, and that most weeks contain no real development. In practice this is the single most important line in the entire system.

The second design decision follows from having no approval gate. Prevention is replaced with fast correction: each run is exactly one commit, so a bad article is undone with a revert and a redeploy in seconds rather than edited under pressure.

Stack

What it is actually made of.

Model

kimi-k3, via the Moonshot API. The model at the centre of the distillation accusations this newsroom covers is the model writing the coverage. That is deliberate.

Runtime

Plain Node with no dependencies. Scheduled by GitHub Actions, Mondays at 09:00 Eastern. Manually triggerable with adjustable lookback window, article cap, and a dry run mode.

Discovery

Syndicated news feeds across seven beats, with the genuine article URL recovered from the aggregator's redirect parameters so every citation points at the original publisher.

Storage

The site is a static build from a content module. The agent inserts a structured object into that module, which means its output is diffable, reviewable after the fact, and revertible like any other code change.

Delivery

Deploys over SSH with the key held as an encrypted secret. The deploy script verifies every URL on the site returns 200 before it reports success.

Field notes

Three things only running it could have found.

Worth recording, because none of these are visible in code review and all three would have killed a Monday run silently.

01

The model rejects the temperature you assume

kimi-k3 refuses any temperature other than 1. A parameter copied from habit returned a 400 on the very first call.

02

Line endings broke the insertion

The routine that splices a new article into the content module matched on a newline. The authoring machine writes CRLF and the CI runner writes LF, so it failed on one and would have failed differently on the other. Now agnostic to both.

03

Reasoning tokens are spent before you see output

Reasoning models consume the token budget thinking, then write. A budget sized for the visible answer was exhausted during deliberation and returned an empty string, which surfaced as an unhelpful JSON parse error. Failures now report the finish reason and token usage instead.

Built by

Brian Galvan.

ALEMBIC was built as working practice in autonomous agent design, not as a demonstration. It runs on a live domain with real search exposure, which is the only environment where this kind of system tells you the truth about itself.