Skip to content

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 02:32
· 49 commits to main since this release
a5f7661

Before you upgrade

  • OpenAI speech moves to gpt-realtime-2.1-mini. OpenAI shuts down gpt-4o-mini-tts, tts-1 and tts-1-hd on Jan 6, 2027. The new model is now the default, and the old ones are marked deprecated with that date. It speaks ten of the voices (not fable, nova or onyx).
  • POST /voice/settings is gone. It saved nothing. Use POST /voice/use, which changes the voice on the active profile.
  • AI and finance are imported from their facades. Code outside a service imports it from app.services.<x>.service only. AIService and FinanceService keep their import path.
  • The empty media queue is removed from arq stacks. It had no tasks and no worker, and it took the name from the plugin that owns it.

Highlights

Illiana's knowledge base. Fill a collection from Overseer by upload, by a path on the server, or by parts of the app picked from the twin. Indexing runs in the background, and with a worker the embedding runs on the worker queue. Illiana searches the bases she is given and knows what each one holds.

Screenshot 2026-10-28 at 10 00 54 PM

Voice. Voice profiles, with a voice designed in three steps: pick the voice, set its delivery, then hear it before saving. Gemini joins as a second speech provider. Each voice wears its provider's logo, and the stack's names are said right.

Screenshot 2026-10-28 at 10 02 18 PM

Meetings, live. Say "Hey Illiana" in a call and she answers while it is still on. Questions asked in the call get answered before it ends. The bot joins quietly, and its card shows what it is working on. "What's this about?" works on any line of a meeting.

Screenshot 2026-10-27 at 3 26 13 PM

Illiana on the map. Replay any of the last 200 requests across the Overseer map, hop by hop, down to the line of code. Illiana draws flows and cards in her answers, and a path card follows each part she names.

Screenshot 2026-10-28 at 10 06 24 PM

Illiana reviews pull requests. patterns check ends with her verdict, and a new breach of a gated rule blocks the change. Known debt stands. She posts as her own GitHub App when you give her one.

Screenshot 2026-10-28 at 10 22 05 PM

Themes as files, and a new shield. A theme is one JSON file. Add your own beside aegis and steward, and the toggle offers it. Every generated app now wears the new Aegis shield, and Illiana has her own rose shield.

The Flet dashboard, polished. Secrets and Settings sit on their own tabs, with secrets in a table. The Server overview shows the same four charts as htmx. Logs are larger and get a toolbar. The main page scrolls.

Screenshot 2026-10-28 at 10 04 17 PM

For plugins. A plugin can grant its tools, ship its queue's concurrency, and add system packages and build steps to the image. New plugins are scaffolded with their release workflow. A project's own site can take /.

Security

  • An uploaded document is sandboxed and never runs as the app. Before, an SVG or HTML file's script ran on the app's origin with the viewer's session.
  • The Flet dashboard makes changes only on a local, undeployed build, the same rule the API applies.
  • virtualenv 21.14.12 (four advisories).

Fixed

  • aegis update regenerates a Postgres stack's migrations with the database down.
  • A Postgres stack on Python 3.13 starts again.
  • A deploy stack with a database and no scheduler imports again.
  • Workers and the scheduler reach the webserver.
  • The twin and the app's health answer without Redis.
  • Calls are steadier: cards stay put, a call ends on a goodbye, and OpenAI realtime speech is two seconds quicker per line.
  • A dropdown in a table stays open while you use it.
  • A generated CLI command no longer ends in "Event loop is closed".

The changelog lists every change.

Installation

pip install aegis-stack==0.17.0

Or run directly:

uvx aegis-stack init my-project

Links

What's Changed

  • A run's log, under the row that started it by @lbedner in #1787
  • Illiana's ontology tool no longer fails on a part that read Postgres's catalog by @lbedner in #1793
  • Deploy without downtime from the Overseer: a rolling deploy that backs up and migrates first by @lbedner in #1791
  • ON-25 + ON-26 + ON-27: services through their facades, meetings into domains/, README and docs tables from the specs by @lbedner in #1788
  • ON-09: what a stack is made of, said once and read everywhere by @lbedner in #1795
  • Questions heard in a live call, answered by a coding agent by @lbedner in #1796
  • Themes as files, every one at parity, with a type axis by @lbedner in #1798
  • Deployments: a Deploy menu and More; Local wears the host OS's mark by @lbedner in #1797
  • A project's own site takes the root by @lbedner in #1799
  • ON-08: replay a request on the Overseer map by @lbedner in #1800
  • ON-28: kept requests read through the API, Illiana and Overseer by @lbedner in #1804
  • Meetings: a coding agent in the dev stack, and the questions tidied by @lbedner in #1805
  • Illiana draws cards and works in code mode; a turn no longer waits on SQLite by @lbedner in #1809
  • Illiana holds the line on a pull request: her verdict blocks, in her name by @lbedner in #1810
  • Only what a click acts on lights up; one button height by @lbedner in #1811
  • Meetings: who owns what nobody pressed send for by @lbedner in #1812
  • Illiana signs off on a clean change by @lbedner in #1813
  • Illiana draws flows on the map; blocking work stays off the event loop by @lbedner in #1814
  • Illiana draws how a part is wired; her depth follows yours by @lbedner in #1816
  • Illiana's card follows what she names; calls keep their cards steady by @lbedner in #1820
  • Meetings bot shows its card and speaks; voice profiles designed in Overseer by @lbedner in #1824
  • Generated CLI commands are async def, run on main()'s one loop (#1821) by @lbedner in #1822
  • Restarts stop logging as errors: streams end, the scheduler closes up by @lbedner in #1826
  • Worker endpoint tests shut down what their startup hooks began by @lbedner in #1827
  • Gemini's voice library loads; voices found by search, as the catalog finds models by @lbedner in #1825
  • Each voice wears its provider's logo by @lbedner in #1830
  • Coding agents plan with the twin: a skill, and its lookups on the CLI by @lbedner in #1829
  • documents + ai on the memory backend imports: no vision reader there (#1823) by @lbedner in #1828
  • A Gemini preview no longer spins for hours; Listen plays on the picked model by @lbedner in #1832
  • A new Aegis shield, and Illiana's own on the chat button by @lbedner in #1833
  • ai conversations awaits before it slices (#1835) by @lbedner in #1836
  • ci(deps): bump actions/create-github-app-token from 2 to 3 by @dependabot[bot] in #1831
  • ON-32: worker queues and tasks in the twin, drawn on the map by @lbedner in #1837
  • Each service says what it holds: typed aggregates an agent reads, never rows by @lbedner in #1838
  • Hey Illiana: the meeting bot answers questions put to it by name by @lbedner in #1839
  • Seven more parts say what they hold: blog, sentiment, changes, meetings, research, insights, spend by @lbedner in #1841
  • Illiana answers live in a call through a realtime session by @lbedner in #1842
  • Voices say the stack's names right: one pronunciation list by @lbedner in #1843
  • Ask Illiana what any transcript line is about (#1736) by @lbedner in #1849
  • A line naming a part of the system offers what it is (#1737) by @lbedner in #1851
  • Reads hand back models: a gated rule, and the knowledge index's figures by @lbedner in #1850
  • Illiana reviews line by line: one resolvable thread per finding by @lbedner in #1855
  • Projects built on Aegis are not failed by Aegis's own standard by @lbedner in #1856
  • README banner, and Illiana reports on every pull request by @lbedner in #1857
  • Every agent tool hands back a model, and the gate holds it by @lbedner in #1859
  • Illiana knows what the index holds, and the RAG API asks who is asking by @lbedner in #1874
  • Delete the media queue stub no worker ever served by @lbedner in #1875
  • Gate a file on every extras group that lists it by @lbedner in #1882
  • Give plugins two Dockerfile hooks, and only data behind them by @lbedner in #1884
  • Let a plugin ship its queue's concurrency by @lbedner in #1885
  • The meeting bot presents what it is working on, and holds a call by @lbedner in #1886
  • Let a plugin grant its tools, and declare their effect by @lbedner in #1887
  • Scaffold a plugin's release workflow, and say how to test CI locally by @lbedner in #1889
  • A broken run_code script over MCP is an error again by @lbedner in #1890
  • Overseer fills Illiana's knowledge base, and the workers do the embedding by @lbedner in #1892
  • Flet dashboard polish: tabs, tables, live charts, and room to read them by @lbedner in #1894
  • Release 0.17.0rc1, and a voice not in the catalog is said so by @lbedner in #1895
  • Release 0.17.0rc2: an update regenerates a Postgres stack's migrations with the database down by @lbedner in #1896
  • Release 0.17.0 by @lbedner in #1897

Full Changelog: v0.16.1...v0.17.0