Living documentation · decision history

LIA's story, decision by decision

Every architecture decision, from the first to the last, told in a few sentences and linked to the building blocks it shaped.

  • 387architecture decisions
  • 12themes
  • 296published releases
  • 6chapters
  • 14 monthsOctober 2025 → November 2026

Version 4.6.0November 10, 2026kept current at every commit, from the repository's data

Overview

Decisions per month and theme

Each bar stacks a month's decisions, colored by theme. Click a bar to jump there.

0255075100125Oct 25Nov 25Dec 25Jan 26Feb 26Mar 26Apr 26May 26Jun 26Jul 26Aug 26Sep 26Oct 26Nov 26283831141011210162754119

Timeline

Every decision

Each decision in a few sentences, with the building blocks it shaped. Filter by theme, search for a word, or follow a building block.

387 decisions shown

Chapter 1 · Oct 1, 2025 – Dec 31, 2025 · 48 decisions

The foundations

The agent graph, sessions kept on the server side, the planner, the data registry, memory, observability, the six languages and deployment on a Raspberry Pi: the framework everything else rests on.

  • Orchestration · 14
  • Platform and delivery · 10
  • Models and costs · 6
  • Reliability and performance · 5

October 2025

2 decisions

November 2025

8 decisions

December 2025

38 decisions
  1. ADR-027Reliability and performance
    Structured logs with no personal data

    To be of any use, logs must be machine-readable. structlog produces JSON with its context (request, person, conversation) and filters out personal data before writing.

  2. ADR-029Platform and delivery
    Redis, a Swiss Army knife kept in check

    Sessions, OAuth states, rate limiting, locks and caches all go through Redis. Each use has its own database, expirations and atomic operations, and an outage degrades the service without blocking it.

  3. ADR-033Platform and delivery
    Deploying on a Raspberry Pi

    Around fifteen services must run in development just as on a Raspberry Pi 5. Docker Compose orchestrates it all, with health checks, resource limits and images for two architectures.

  4. ADR-045Platform and delivery
    Cleanly injected dependencies

    Repositories, services and routers chain together through FastAPI dependency injection, with database sessions opened and closed at the right time and easy to mock in tests. A route failure reaches the session to roll back its transaction; closing finishes before cancellation propagates.

Chapter 2 · Jan 1, 2026 – Mar 31, 2026 · 18 decisions

Beyond the keyboard

A first round of security hardening, voice dictation, knowledge spaces and syncing an online folder, LIA's journals, browser control, usage limits — and the first public open-source release.

  • Memory and personalization · 4
  • Knowledge and documents · 3
  • Orchestration · 3
  • Models and costs · 2

January 2026

3 decisions
  1. ADR-053Memory and personalization
    Learning your interests

    After each answer, LIA spots one or two topics the person cares about in the background, without slowing the conversation down, to personalize her answers and then her initiatives.

February 2026

1 decision

March 2026

14 decisions
  1. Version 1.0.0 · Mar 13, 2026 (opens in a new tab)
  2. Version 1.1.0 · Mar 14, 2026 (opens in a new tab)
  3. Version 1.2.0 · Mar 14, 2026 (opens in a new tab)
  4. Version 1.3.0 · Mar 14, 2026 (opens in a new tab)
  5. Version 1.4.0 · Mar 14, 2026 (opens in a new tab)
  6. Version 1.5.0 · Mar 17, 2026 (opens in a new tab)
  7. Version 1.6.0 · Mar 19, 2026 (opens in a new tab)
  8. Version 1.7.0 · Mar 20, 2026 (opens in a new tab)
  9. Version 1.8.0 · Mar 21, 2026 (opens in a new tab)
  10. Version 1.9.0 · Mar 22, 2026 (opens in a new tab)
  11. Version 1.10.0 · Mar 23, 2026 (opens in a new tab)
  12. Version 1.11.0 · Mar 24, 2026 (opens in a new tab)
  13. Version 1.12.0 · Mar 26, 2026 (opens in a new tab)
  14. Version 1.13.0 · Mar 28, 2026 (opens in a new tab)

Chapter 3 · Apr 1, 2026 – Jun 30, 2026 · 23 decisions

Reasoning and speaking up

ReAct mode, an evolving psyche, skills, health data, the morning briefing, LIA's voice, sub-agents and reasoning tuned per provider.

  • Orchestration · 5
  • Voice · 4
  • Memory and personalization · 3
  • Models and costs · 3

April 2026

10 decisions
  1. Version 1.14.0 · Apr 2, 2026 (opens in a new tab)
  2. Version 1.15.0 · Apr 8, 2026 (opens in a new tab)
  3. Version 1.16.0 · Apr 9, 2026 (opens in a new tab)
  4. Version 1.17.0 · Apr 21, 2026 (opens in a new tab)
  5. Version 1.18.0 · Apr 23, 2026 (opens in a new tab)

May 2026

11 decisions
  1. Version 1.19.0 · May 5, 2026 (opens in a new tab)
  2. Version 1.20.0 · May 6, 2026 (opens in a new tab)

June 2026

2 decisions

Chapter 4 · Jul 1, 2026 – Jul 31, 2026 · 101 decisions

Audit and rigor

A month of a hundred decisions: an end-to-end audit, security and backups, a CI that runs exactly what the developer runs, alerts that wake you up for a reason, and the first honesty rules.

  • Experience and interface · 16
  • Platform and delivery · 15
  • Reliability and performance · 14
  • Orchestration · 12

July 2026

101 decisions
  1. Version 1.21.0 · Jul 2, 2026 (opens in a new tab)
  2. ADR-094Platform and delivery
    Deleting code that's no longer used

    Three windowing functions were no longer called anywhere. They go, along with their settings and their tests: a dead subsystem costs something at every change.

  3. ADR-099Platform and delivery
    Removing a configuration never wired in

    An nginx reverse proxy shipped with the very first version had never been connected to anything. It is removed, because a file that serves no purpose misleads whoever reads it.

  4. Version 1.22.0 · Jul 9, 2026 (opens in a new tab)
  5. Version 1.23.0 · Jul 9, 2026 (opens in a new tab)
  6. Version 1.24.0 · Jul 13, 2026 (opens in a new tab)
  7. Version 1.25.0 · Jul 16, 2026 (opens in a new tab)
  8. ADR-158Experience and interface
    Translations that are complete, not just present

    Key parity couldn't see that a translation was truncated. The truncations are repaired, and a ratchet keeps them from increasing.

  9. ADR-170Orchestration
    A compute budget, not a clock

    Time spent waiting for your approval was counted as compute. The ReAct budget now counts only real computation, and a guard stops a loop that keeps repeating the same call.

  10. ADR-171Experience and interface
    Sticky headers finally work

    A global CSS rule had disabled every “sticky” element from the very start. A different overflow value clips the page without breaking the stickiness.

  11. Version 1.26.0 · Jul 29, 2026 (opens in a new tab)
  12. ADR-181Experience and interface
    The public site's “Cosmos” identity

    The public area adopts a cosmic identity and scroll-driven choreographies, applied through a CSS scope without rewriting the components.

  13. Version 1.27.0 · Jul 30, 2026 (opens in a new tab)

Chapter 5 · Aug 1, 2026 – Aug 31, 2026 · 62 decisions

Making everything visible

Accessibility by contract, settings and capabilities on display, time-of-day pricing, the self-hosting installer, a model catalogue that tells the truth, the expressive eyes and self-diagnostics.

  • Experience and interface · 15
  • Platform and delivery · 10
  • Orchestration · 7
  • Models and costs · 6

August 2026

62 decisions
  1. ADR-205Experience and interface
    A status names a tone

    Three components hard-coded their own status colors. A status now names a tone, rendered by a single component that inherits the contrast guard.

  2. ADR-206Experience and interface
    Components accessible by contract

    A UX audit showed that accessibility was only checked on a fraction of the interface. A field's contract lives in one place, and an empty screen always offers a way out.

  3. ADR-207Experience and interface
    An action has an altitude

    Actions of the same kind took different shapes from one screen to the next. Four action altitudes, four button shapes, and nothing else.

  4. ADR-212Reliability and performance
    Log labels under control

    Promoting varied fields to Loki labels multiplied the indexed streams. Only fields with a small, closed set of values become labels; the rest is filtered at read time.

  5. Version 1.28.0 · Aug 5, 2026 (opens in a new tab)
  6. Version 1.29.0 · Aug 8, 2026 (opens in a new tab)
  7. Version 1.30.0 · Aug 16, 2026 (opens in a new tab)
  8. ADR-230Experience and interface
    A public version history

    “See the full history” led to a page that didn't have it. A public, server-rendered page publishes every version.

  9. Version 1.31.0 · Aug 21, 2026 (opens in a new tab)
  10. ADR-243Experience and interface
    OLED black

    Absolute black for OLED screens: a refinement of dark mode carried by an attribute, not a fourth theme that would break the others.

  11. Version 1.33.0 · Aug 26, 2026 (opens in a new tab)
  12. Version 1.32.0 · Aug 27, 2026 (opens in a new tab)
  13. ADR-248Orchestration
    ReAct: a promise is not an answer

    “Give me a minute” is not an answer. The ReAct loop shares the pipeline's memory, earns its budget by producing, and never publishes a message announcing work it won't do.

  14. Version 1.34.0 · Aug 28, 2026 (opens in a new tab)
  15. Version 1.35.0 · Aug 28, 2026 (opens in a new tab)
  16. ADR-231Orchestration
    A typed runtime context

    A turn's identity traveled in an untyped dictionary. It moves into a typed, frozen LangGraph context — without adopting Agent Server, which is incompatible with LIA.

  17. Version 1.36.0 · Aug 29, 2026 (opens in a new tab)
  18. Version 1.37.0 · Aug 29, 2026 (opens in a new tab)
  19. Version 1.38.0 · Aug 29, 2026 (opens in a new tab)

Chapter 6 · Sep 1, 2026 – today · 135 decisions

Keeping promises

Sealed registers, exact counts, the Workboard, meetings, the phone and Live mode — and failures spelled out rather than guessed.

  • Experience and interface · 21
  • Connectors and tools · 17
  • Reliability and performance · 15
  • Models and costs · 14

September 2026

75 decisions
  1. ADR-255Connectors and tools
    One authority on what an MCP server declares

    Reading the JSON schemas of MCP tools was duplicated. A single module reads the declaration to the letter of the standard, for the adapter and the planner alike.

  2. ADR-256Orchestration
    A budget that counts all the work

    The ReAct budget only counted reasoning. Tool time becomes a second, named budget, every call has its own bound, and a delegation can no longer use everything up.

  3. Version 1.39.0 · Sep 3, 2026 (opens in a new tab)
  4. Version 1.40.0 · Sep 3, 2026 (opens in a new tab)
  5. ADR-263Traceability and honesty
    Every action declares what it owes, and leaves a trace

    Every tool declares whether it reads, drafts, asks for confirmation or acts. Every action is recorded before it happens, then settled from its result, and three registers, which the instance can seal per account, trace what LIA did, read and decided.

  6. Version 1.41.0 · Sep 5, 2026 (opens in a new tab)
  7. Version 1.42.0 · Sep 5, 2026 (opens in a new tab)
  8. Version 1.43.0 · Sep 6, 2026 (opens in a new tab)
  9. Version 1.44.0 · Sep 10, 2026 (opens in a new tab)
  10. Version 1.45.0 · Sep 16, 2026 (opens in a new tab)
  11. ADR-294Experience and interface
    A face that never replays the same scene

    Brows sitting on the eye, speech generated syllable by syllable, varied gestures and little scenes at rest: the avatar never plays the same thing twice.

  12. Version 1.46.0 · Sep 18, 2026 (opens in a new tab)
  13. Version 1.47.0 · Sep 20, 2026 (opens in a new tab)
  14. ADR-315Models and costs
    An image prompt can be improved without being betrayed

    For those who turn it on, a dedicated model rewrites the description of each new image with the techniques the vendors recommend: framing, light, lens, style. What is asked does not change, the text to write in the image stays word for word, and at the slightest doubt the original request goes as it is.

  15. ADR-317Security
    Logs keep facts, never a person's words

    Outside debugging, the logs keep only counts, lengths and identifiers: no searches, no interests, no names of contacts or files. When a database or a service quotes the data it refused, the quotation is removed before the line is written. A test reads every log line in the code and refuses one that would write a person's words.

  16. ADR-318Traceability and honesty
    LIA computes instead of estimating, and finds what she did

    A calculation, a date or a currency conversion is no longer worked out by guess: LIA computes it exactly, at the day's reference rate, which she names. She can also search her journal for a subject found along the way, tell you what she did and consulted over a period with exact totals, and show you again a file she produced while it still exists.

  17. ADR-319Knowledge and documents
    A generated file can be kept

    From the gallery, you can keep an image, a document or a screenshot: the automatic cleanup no longer deletes it, within a per-account limit shown before any refusal. Releasing it gives it a deadline again, never an immediate deletion, and the chat says on every read whether the file is kept or no longer exists.

  18. ADR-320Experience and interface
    The chat updates itself

    A message that arrives from elsewhere — another tab, Telegram, a routine, a reminder — appears without reloading the page: the server says so as soon as the message is saved, and the chat adds what is missing without touching what is already shown. Nothing moves while an answer is being written, and a reader who scrolled up is not moved.

  19. ADR-321Connectors and tools
    A file or an answer can be sent by e-mail

    An image, a document, a capture or an answer leaves by e-mail, as an attachment, with the subject and words the person chose — LIA writes nothing in their place. It leaves from their connected mailbox to whoever they want or, without one, goes to their own verified address. Each mailbox has its largest size, taken from its provider's documentation and stated before sending.

  20. ADR-322Initiative
    A routine has a single clock

    A routine follows either a schedule or a condition — never both: the person first chooses when it runs, and only that choice's fields are shown. A routine waiting for something no longer has hours: LIA checks the condition itself, day and night, until an optional last day. It runs only on something new, never twice for the same thing, within a daily limit.

  21. ADR-323Experience and interface
    Every sentence in your language

    E-mails, the Telegram bot, error messages and the application's catalogues are now written in the language of the person who reads them: no more French sentence served by default to a German or Chinese account, no more verification e-mail arriving in English. Every translation table carries the six languages — an automatic check makes sure of it on every change. The hard-coded French that only the model read is now technical English, so that no language is favoured; what remains — a few prompts and labels in French, model-facing texts translated into the six languages — waits for a measurement of what translating them changes.

  22. ADR-324Voice
    A radio just for you

    LIA becomes an on-demand radio station in your language: your day, then the news from the outlets it follows and the sites you add, written, checked and voiced for you while you listen. A fixed grid decides what airs, the models only write, and every sentence shows its source. Nothing is produced when nobody listens, nothing is kept afterwards, and what the session costs is shown while it spends.

  23. Version 2.0.0 · Sep 28, 2026 (opens in a new tab)
  24. ADR-325Models and costs
    JEV decides, each use keeps its own switch

    JEV helps choose, route or assess within bounded choices, with a hot switch per use and the existing path taking over on uncertainty. Optional uses, off by default, detect an absence of personal references or a rejection of every pending action; neither grants permission to execute. Previews retain canonical results and observers never suppress writes; administrators see context and outcome, paid failures and fallbacks both count, and performance is checked over the complete journey before activation.

  25. Version 2.1.0 · Sep 29, 2026 (opens in a new tab)
  26. ADR-326Security
    No hostile text freezes LIA, no redirect steers her

    The functions that flatten a text for a voice, a notification or a card read some texts in exponential time: 51 characters typed in the chat cost 4.5 s, a 32 KB booby-trapped e-mail froze LIA for 3 s. Every pattern is rewritten linear and two tests hold it, on the server and in the browser alike. Reading a web page now checks every redirect before following it and connects to the verified address, never to a later resolution of the name.

  27. ADR-327Traceability and honesty
    A skill from elsewhere is read as data, and the library installs what was read

    Skills can be searched on skills.sh or at a GitHub address, read one by one before being installed, and kept up to date; the install takes exactly the commit that was read, every file verified. A skill written elsewhere runs apart, with its own files only: never the person's connectors, no image or web content in its answers. A skill can run its own commands in a throwaway copy of its folder, the network only towards permitted hosts, and one the chat writes enters only on the person's click.

  28. Version 2.2.0 · Sep 30, 2026 (opens in a new tab)

October 2026

41 decisions
  1. ADR-328Initiative
    The heartbeat has no daily quota: every pass reaches the decision

    LIA no longer holds back a useful notification because a daily cap was reached: the decision model judges whether a signal deserves an interruption. Every pass inside the person's window reaches that decision, and only the window, the pauses between two messages, a meeting in progress and the spending ceilings bound the rhythm. Wakes from an e-mail and anticipated moments follow the same rules.

  2. ADR-329Voice
    A trained wake word heard in the browser, and a Live standby that bills nothing

    LIA wakes on a phrase recognised entirely in the browser by a small model trained for its language, without the technical condition that kept the old English "OK Guy" off the iPhone and the native apps; "LIA, stop" cuts her voice. The first model, "Dis LIA" in French, ships in beta because its bench does not yet reach the published thresholds, and the other languages keep the tap. In a Live session, silence puts the assistant on standby: the connection to the provider closes, nothing more is billed, and a tap or the phrase wakes it without losing the conversation.

  3. ADR-330Experience and interface
    Media served without runtime work: pre-generated illustrations, a video the operator declares

    The blog illustrations are written once, in four widths and a share image, and served as they are: the server resizes nothing any more and the edge cache keeps them. The landing's video is hosted where the operator declares it and described by a manifest read on demand; without one, the section does not exist. Looping, it starts when it is visible, with sound where the browser allows it and muted elsewhere until a click, and while the sound plays the page's title and the section titles beat with the music thanks to a beat map computed ahead of time.

  4. ADR-331Platform and delivery
    What the gates cannot see is read every week

    The checks on every change read a single advisory database: the September 2026 review found twenty advisories published by the dependencies' own repositories that no tool saw. A weekly watch now reads those advisories, end-of-life dates, the registries and the browser engine, and every finding is fixed or accepted in writing, with a review date. Python versions move through a single command, after a cooldown, never backwards. Moving off an unmaintained generation can be qualified through an official adapter with unchanged rules and thresholds; compatibility metadata alone is insufficient.

  5. Version 2.3.0 · Oct 2, 2026 (opens in a new tab)
  6. ADR-333Reliability and performance
    Logs, traces and metrics answer each other, and the observation pipeline watches itself

    A log line opens its request's trace, a trace opens its logs and metrics, a latency point opens the example that produced it: links measured broken in production now work. The pipeline carrying these signals is watched in turn, with an alert when logs go missing, and every dashboard follows one convention: a week of history and a shared menu.

  7. Version 2.4.0 · Oct 3, 2026 (opens in a new tab)
  8. ADR-332Experience and interface
    Cards that show everything received, and actions tied to the message that displays them

    Answers that carry data — e-mails, appointments, contacts, places, routes, weather — are shown as cards that display everything the source supplied, never inventing a missing value, with the complete detail kept behind a disclosure. The model never reads the card itself, only the authorised facts, so the conversation does not grow heavier. Replying to an e-mail or adjusting a reminder from a card prepares a request tied to the original message and checked again at the click, and a route can open as an interactive map whose cost is announced, then counted.

  9. Version 2.5.0 · Oct 4, 2026 (opens in a new tab)
  10. ADR-334Voice
    A personal speaking avatar, with one audible output — proposed design

    An optional Simli face accompanies existing speech on a personal key with one audible output. The API controls the connection and its stop; the window shows confirmed or pending closure because silence can consume the plan. The decision remains proposed until provider and real-device qualification; Radio keeps its own player.

  11. Version 2.6.0 · Oct 5, 2026 (opens in a new tab)
  12. ADR-335Orchestration
    Canonical semantic proof and dependencies that can start

    Linking two values requires an observation from the right source and account with the expected role; identical words are insufficient. The catalogue retains the read steps needed to start a chain and identifies dependencies without a source. An attempted change invalidates earlier proof both before and after the call.

  13. ADR-336Reliability and performance
    Requested results are checked against what tools actually obtained

    Explicit requests are anchored to the person's words and checked against observations: value, date, count, operation and completeness. The day and timezone remain those of the turn's start, even after resume. A draft stays pending and an opaque delegation stays unknown; verified gaps reach bounded read recovery and the answer.

  14. ADR-337Reliability and performance
    ReAct reads saved before interruption and reused within the same turn

    Declared independent reads can advance together under a limit, and their results are saved before a possible confirmation. A fresh complete read can serve again within the same turn and context. Changes invalidate reuse. A hard stop before saving can still repeat reads; observations are not shared across turns.

  15. ADR-338Connectors and tools
    Current MCP contracts carry capabilities and exact server identity

    Each person's MCP tools are discovered from their current declarations; only successfully constructed tools are advertised. The server keeps its exact identity separate from simplified routing and callable names. A server-bound task checks its target before confirmation. Older descriptions receive current capabilities without claiming to know the server's entire ontology.

  16. ADR-339Orchestration
    Application commands with current permissions and private continuations

    LIA manages its settings and objects through declared operations. Encrypted durable commands bind approved content, actor, origin and expiry; authority, capabilities and preconditions are reread at execution. Source services retain their compare-and-set checks, and claims are token-fenced. Files, OAuth, private input and device work continue in the authenticated browser. Waiting is not completed success; a lost result remains uncertain, without a promise of external exactly-once execution.

  17. ADR-340Experience and interface
    Native volume from reviewed artwork

    Frontal artwork textures bounded relief whose contour and fringe come from source alpha. Hidden anatomy remains approximate; eyes, brows and mouth are projected DOM/SVG layers, and the scarf is deliberately composited in front. Body, face and accessories share the existing rig. Visibility, reduced motion, readiness and graphics context govern resources and fallback to the fixed drawing. Geometry and lifecycle tests certify neither arbitrary occlusion nor real-device performance.

  18. ADR-341Experience and interface
    Editable motion production and exclusive presentation

    An offline Remotion project preserves chapters, HTML/CSS views, poses and musical accents so the film and feature focuses can evolve together. Reconstructed screens cite native sources and use fictitious data; geometry stays fixed outside explicit focuses, with BIP accompanying the presentation. The manifest can declare a full film distinct from the playlist: its fullscreen dialog suspends the background player. The film is French and its controls are translated; renders, delivered files, music provenance and broadcaster acceptance remain separately qualified.

  19. ADR-342Experience and interface
    An operator-enabled runtime avatar campaign

    A server option, empty by default, introduces BIP on the next authenticated visit per browser origin. An explicit identifier changes only style and its marker; visibility, size, positions and later manual choices are preserved. No account avatar column is added. Web Locks coordinates tabs where available; without it, rereading the latest record does not guarantee a simultaneous transaction. Disabling the campaign stops new applications without restoring earlier choices, and cannot reach offline devices.

  20. ADR-343Memory and personalization
    The portrait reads the whole material, and its brief is a synthesis

    Nine records about the person — memories, interests, habits, debriefs, open loops, workboard, routines, reminders, kept answers — are read whole, every item citable, under one share of the model's window, and any cut is stated. The portrait is again an analysis of the person on seven facets, never an inventory, and the brief is written as its own sentences; the semantic review, measured rejecting grounded readings, is removed: what refuses invention is structural, every reading cites what grounds it. The budgets are stated targets, never a clamp. A journal change marks the portrait stale, served dated, instead of wiping it; a deleted entry takes the readings it grounded with it. Measured on dev before shipping.

  21. Version 3.0.0 · Oct 12, 2026 (opens in a new tab)
  22. ADR-344Connectors and tools
    A mailbox draft is the person's own

    LIA saves, edits and trashes Gmail, Outlook and iCloud drafts without asking: a draft stays in the person's mailbox and reaches nobody, and the trash can be undone. Only sending asks for a confirmation, on a card showing the draft as the mailbox holds it; a draft edited in the mailbox meanwhile is not sent, and a change asked on the card is written before it leaves. On the way, the reply card now shows, and sends to, everyone the reply reaches.

  23. ADR-345Voice
    Fish Audio joins LIA's voices, and each engine bills only what it says

    Fish Audio speaks (five models, among them s2.1-pro and drama-3), transcribes meetings and dictation, and its voices are cloned or designed from the administration, under a consent attestation filed in the audit log. Every sentence heard goes through one door that bills it once, in the unit of the engine that actually spoke it; each vendor account has one request allowance, shared by every voice feature; and remote dictation goes to the engine the administrator chose, which the settings name. LIA slips performance cues (a laugh, a whisper, a sigh) into what it writes to be spoken, in the syntax of each engine that performs them, and the radio's voices hold a dialogue in a single take.

  24. ADR-346Orchestration
    The advisory replanner is retired: a failure is said, never replayed

    Measured in production, the analyzer that followed every failed plan called failures transient that were not, and the recovery loop it waited for would have replayed what cannot be repaired. It goes: a failure is stated in the answer, a passing outage is retried by the client that met it, and a typed counter shows every failed step, including one that happens before a tool is called.

  25. ADR-347Orchestration
    What a read tool finds reaches the answer, and a refusal is never a success

    In pipeline mode, the answer was written from a sentence about a tool's data — “2 destinations” — while the travel times, the connections or the next page stayed aside: without them, 0 answers in 9 gave the travel times, 27 in 27 with them. They now arrive as in autonomous mode, bounded and marked as third-party content. And a tool's refusal can no longer turn into a success on the way: the Hue commands said they had switched on a lamp that did not exist.

  26. ADR-348Memory and personalization
    LIA's experience is learned from evidence, never from its own grade

    The old self-efficacy moved only on LIA's self-rating, a single exchange was enough to make a strength or a weakness, and only the final answer read it. Seven domains now keep two separate axes: what a turn verifiably achieved, and the usefulness the person expressed with 👍/👎. From five observations, LIA may verify a point, ask a question or name a limit — without changing any model, tool or budget.

  27. Version 3.1.0 · Oct 17, 2026 (opens in a new tab)
  28. Version 3.2.0 · Oct 18, 2026 (opens in a new tab)
  29. ADR-350Connectors and tools
    Share a capability without sharing its credentials

    An accepted connection can receive an independent skill, MCP server or plugin copy, disabled and labelled with its origin. The reviewed package is immutable, retries preserve the recipient’s changes, and credentials and grants remain private. An enabled peer skill deliberately follows the recipient-authored policy.

  30. ADR-351Orchestration
    The display and assistant share the same advisory labels

    Optional native decisions annotate authorized email and appointment evidence once. Uncertainty stays unlabelled, fees and quotas still apply, and neither a category nor confidence can authorize an action. Fixed corpora and fresh adversarial cases bind the shipped policy to measured evidence.

  31. ADR-355Connectors and tools
    Acquired details and an accounted route to the selected place

    The place panel reuses information already obtained without searching for the place again. The route starts from a permitted browser position, a fresh and dated last-known position, or home: walking up to 2 km inclusive, driving above it, with one recalculation if the actual walking route exceeds the limit. Spending limits still apply and every paid call is recorded, even if the route fails or is cancelled.

  32. ADR-356Experience and interface
    A readable map with matching numbers in the list and on pins

    The map waits for explicit activation without reserving a large empty space. The same details open in a desktop popup or a phone dialog, each with a single scrolling region. The list and pins share the numbers from the original order; a place without coordinates keeps its number and link without shifting the others. With unchanged content, an activated map stays active during automatic display updates.

  33. Version 3.3.0 · Oct 19, 2026 (opens in a new tab)
  34. ADR-361Reliability and performance
    An egress probe that names the failing step and confirms a cut

    The outbound-connectivity probe separates name resolution from the connection and confirms a loss over several paced attempts. A lost DNS packet no longer opens a critical incident: a recovery or a slowdown is reported as degraded, and a real cut names the step that failed.

  35. ADR-362Models and costs
    Claude's cache read back from one turn to the next

    The next turn now reads the whole history back from the cache instead of writing it again, and what it will read is kept for an hour when a person waits and exchanges often. These hour-long writes are billed at their fair price, and an earlier turn's thinking goes back to the Claude model that wrote it, wherever that model can read it.

  36. Version 3.4.0 · Oct 22, 2026 (opens in a new tab)
  37. ADR-363Security
    A password reset bounded per account and bound to it

    Each account now receives at most a few reset e-mails, whatever address asks for them, and a link only serves the account and the password it was issued for. An account that signs in with Google receives a notice instead of a link, an administrator receives nothing, and a burst of requests or sign-ups alerts the operator.

  38. ADR-365Reliability and performance
    Private LIA in a shared isometric world

    The browser draws the world while Redis arbitrates access and movement; actions retain their native interfaces and approvals. Account name and appearance are shared with consent, activities and home stay private, and peers see only a coarse connection status. Messages stay between their recipients, and consented translations are bounded and accounted.

  39. Version 3.5.0 · Oct 23, 2026 (opens in a new tab)
  40. ADR-364Security
    An anti-robot check at the password doors

    Sign-up, password sign-in and reset requests now require the token of a Cloudflare Turnstile check, which the server has verified: a script calling the API without a browser is refused. Most visitors see nothing, and when Cloudflare does not answer only the sign-in goes through — a new account or a reset e-mail waits.

  41. Version 3.6.0 · Oct 24, 2026 (opens in a new tab)
  42. Version 3.7.0 · Oct 25, 2026 (opens in a new tab)
  43. Version 4.0.0 · Oct 27, 2026 (opens in a new tab)
  44. ADR-366Reliability and performance
    A personal MCP server's catalogue, served without waiting

    What a personal MCP server offers is kept on the account and served again from one message to the next, on any process, while a single one re-checks it in the background. Servers get ready in parallel; one that is too slow is left out of that message, named in a notice, and ready for the next. When the kept copy has outlived its freshness, LIA checks before the call that the tool is still offered in the same form, and otherwise refuses to send it.

  45. Version 4.1.0 · Oct 28, 2026 (opens in a new tab)
  46. ADR-367Orchestration
    “Marc's email”: designated by what it is, asked about when several fit

    When the person designates an item they have just seen by what it is — its sender, a word of its subject — the analysis of the request only says how it is designated; code finds which of the items actually shown those words designate. One: LIA acts and names it in the action journal. Several: LIA asks which one, with a question no model writes, and never guesses; none: a new search.

  47. Version 4.2.0 · Oct 30, 2026 (opens in a new tab)
  48. ADR-368Traceability and honesty
    The person decides when LIA asks before an MCP tool

    The person chooses when LIA asks for their approval before an MCP tool: for their whole account, for each server, for each tool — “never ask” staying bound to what the tool declares. Before any change that would make LIA ask less, the page lists what LIA would no longer ask about; nothing is locked. A dedicated agent is asked once before each task whenever one of its tools would ask, and the task then runs to completion; from the chat, LIA can only ask more.

  49. ADR-369Connectors and tools
    The person acts on their own services, with no model

    The “Tools” section opens the person’s mail, calendar, tasks, contacts, files, on Google Drive or OneDrive, and lights so they consult them and act by hand: no model, no token, the provider’s own speed. The screen offers only what the provider accepts, and whatever a client gains for it, the assistant’s tools gain at the same time; nothing the person does by hand reaches a register, since it is not an act of LIA’s.

November 2026

19 decisions
  1. Version 4.3.0 · Nov 1, 2026 (opens in a new tab)
  2. ADR-370Experience and interface
    A page the model writes runs in the chat, in the strictest frame

    Asking for a game or a small tool gives a page that runs in the conversation, with its file; asking for the code gives the code, and what a person types stays text. The page runs isolated, with no access to the account or to any site of its choosing, under a policy that names no host but the map sources the operator allows. Read back from history it waits for a click, because an endless loop would freeze the tab, and the model only ever reads its title.

  3. ADR-371Orchestration
    The domain agents' slots leave with their nodes

    The administration offered to tune sixteen agents no turn called any more: a plan runs the tools directly, and production counted not one token on them. Their slots, nodes and prompts are gone; the Emails slot stays, because it writes the messages. A fresh install now starts on models that have a tariff.

  4. ADR-372Connectors and tools
    From the Tools: a click, a call, a proposal

    Summing up a message, proposing a reply, reading a business card: a click asks LIA one thing and gets a proposal the person reads, never a write to their provider. The act is traced and billed to whoever clicked, and nothing adds a control to a screen with no room for one: the last icon of every bar opens the list.

  5. Version 4.4.0 · Nov 6, 2026 (opens in a new tab)
  6. ADR-373Voice
    The personality governs the voice

    An ElevenLabs voice session set to a cynical personality spoke like a cheerful assistant: the portal's expression tags prescribed enthusiasm and LIA's own frames asked for warmth. Now every voice of the person — Live, Live direct, the phone and the chat's spoken comment — speaks in the chosen personality, substance first, facts untouched; LIA itself writes the tag palette, the greeting and its tools on the agent. A call to a third party stays cordial.

  7. Version 4.5.0 · Nov 7, 2026 (opens in a new tab)
  8. ADR-374Models and costs
    JEV keeps what someone reads, and its thresholds become settings

    The result previews no screen showed any more and the initiative's JEV gate, which told nothing apart, are gone, while the initiative evaluator still sees every tool turn. Every JEV threshold becomes a bounded setting the administration screen can change, and every paid judgement is counted over time, so that a threshold is decided on what really happens rather than on a corpus.

  9. ADR-375Initiative
    What LIA learns from use becomes proposals

    An hour no longer conditions a recurring request: a need is recognised by the days it comes back, and the hour only pre-fills. Six kinds of proposal grow from what LIA already records — automating a need, moving a routine relaunched by hand, widening the notification hours, connecting a source… — and one click accepts and carries them out. The chat shows at most one under an answer, chosen by code.

  10. ADR-376Experience and interface
    A card opens its record in the Tools, on a signed proof of its source

    An e-mail, an event, a contact, a task, a file or a light shown in the chat opens in the Tools. The card carries a signed destination, bound to the account and to the source that answered; on the click the server checks that source again and refuses, saying why, when the account changed, rather than open another record that happens to share the identifier.

  11. ADR-377Experience and interface
    The account chooses how the interface is drawn

    Every icon goes through one door that draws the account's chosen style, Lucide, Fluent Color or Streamline Flex, without changing what any symbol means, and the system's high contrast keeps its colours. The theme can also turn from light to absolute black by itself at the chosen hours, on the account's clock, without a timer ever writing the profile.

  12. Version 4.6.0 · Nov 10, 2026 (opens in a new tab)
  13. ADR-378Experience and interface
    Main stays permanent and each discussion gets its own runtime

    A badge opens Main and named discussions with independent histories and usage figures. Automatic messages keep arriving in Main, and account preferences and learning are shared. Reset and deletion retire the exact runtime and leave a receipt for its cleanup.

  14. ADR-379Connectors and tools
    A listed e-mail says whether it was answered

    Read alone, a message cannot say whether it was answered: the reply is another message of the same conversation. LIA now reads that conversation whenever it lists mail, and tells the same fact everywhere: already answered, a reply left as a draft, a reply received. So it no longer offers to answer an e-mail the person already answered, in the chat as in notifications, the home page, relationships and the Tools.

  15. ADR-380Reliability and performance
    A time you say travels with its zone

    “Half past nine” names a precise instant only with the zone you say it in, and every hour LIA lost was lost when one travelled without the other: an appointment moved to 9:30 turned up at 10:30. The time and its zone are now a single object, which LIA hands as it is to Google, Microsoft and iCloud with nothing converted on the way, and one rule covers the two nights the clocks change. And every journey of a time, from the screen to the calendar and back, is replayed on calendars simulated from their documentation, in zones far from universal time.

  16. ADR-381Orchestration
    A model knows when each message was written

    A model knew the present time, never when the earlier messages were written: resumed days later, a conversation read as if everything had just been said, and « the dentist tomorrow », written on a Tuesday, was still ahead on the Friday. Each of your messages now carries the moment you wrote it, in your time zone, and every model that reads the conversation again reads it: the answer, the ReAct loop, the analysis of your request, the compaction summary, the phone call, and what LIA retains about you (memories, interests, commitments, journal), whose deadlines now read in your time zone. Measured on three model families before the code was written, the questions that depend on it went from about 3 right answers out of 21 to 14, 16 and 20 out of 21.

  17. ADR-382Connectors and tools
    The instance searches the web for whoever has no key

    With no search key of their own, a person was searched on Wikipedia alone. LIA now runs SearXNG, a keyless metasearch engine, beside it, on by default (the operator can refuse it): the chat's search, the enrichment of answers, the watch over your interests and the Tools then find their web links there, unfiltered as with Brave, your own Brave key keeping priority. Measured before the code was written: 58 useful searches out of 60 in the six languages, in 0.7 seconds on average. And a watch source that would ask nothing is no longer counted as consulted.

  18. ADR-383Connectors and tools
    A draft speaks in the person's voice

    Two people answering the same e-mail used to get the same reply from LIA. The first time LIA writes an e-mail for you, it now learns how you write from your latest sent e-mails — greeting, sign-off, signature, tone, never what you wrote about — and follows it in every reply and new message, including the reply you confirm, which LIA now writes itself when you did not dictate its words. You read, switch off or forget it in the settings. Measured on fictional people before the code was written: replies went from about 42 to 63 marks of their author's style out of 66, without a single fact copied from past mail.

  19. ADR-384Experience and interface
    A message written while LIA works waits its turn

    A message sent while LIA was answering — or while a routine ran on your account — was refused and lost. The server now keeps it with its discussion, below the conversation, where you can edit or withdraw it; words written next join it. It leaves by itself, as your message, as soon as LIA has finished normally; if the answer was stopped or failed, it waits for your decision. It is never taken as the answer to a question LIA asks you, and « Send now » stops the answer in progress, then sends it. Every run now says how it ended, and that end, written when the account is released, decides.

  20. ADR-385Experience and interface
    A note joins the answer being written

    What you write while LIA works is often a detail of your request (« only the ones open on Sunday »), and sending it after the answer redid the work. In ReAct mode, your waiting message can now join the answer in progress: LIA reads it at its next step, as your own words, and takes it into account from there, without rewriting anything before it. Until it has read it, you can edit or withdraw it; if it finishes first, it is sent right after, as usual. Your note stays in the conversation, in its place, and the request that the answer, the memory and the next turns keep includes it.

  21. ADR-386Initiative
    Another system starts a routine

    A routine can now run when another system calls it: a home automation box, a code forge, a form service. LIA gives the routine its own address and a secret, shown once; the other system signs each call with it, and LIA serves the call within a minute, reading what it sent as data, never as instructions. A call without a valid signature is refused, a burst is bounded, a retried delivery counts once, and a lost secret is replaced by a new one that retires the old at once. An administrator can switch the capability off; the demonstrator keeps it off.

  22. ADR-387Initiative
    A routine watches a web page

    A routine can now wait for a web page to change: a price, an “in stock” that comes back, an announcement added. LIA reads the public page itself, with no model, and runs the routine only for the lines that appear on it, read as data, never as instructions. A line that leaves and comes back is announced again.

  23. ADR-388Knowledge and documents
    Documents use what their formats can do

    A document LIA generates now uses its format's own mechanisms: a spreadsheet computes with real formulas, a chart can be edited in Excel or PowerPoint, a deck you will present moves soberly, a report opens on a cover page with its key figures, its figures and its clickable sources. The model says what things are and the renderer draws them, in a palette checked for contrast that follows the document's tone. Illustrations are generated images: they come only if you allow them in Settings › Documents, within a budget, and each one is counted in your costs.