Project

Franco

Work in progress

A home voice assistant that starts out knowing almost nothing. When you ask it for something it cannot do, it writes the ability itself, announces it out loud, and from the next time on it answers instantly without asking any model anything.

Why it exists

There is an Echo in this house. It does four things well and everything else it does not do, and there is no way to teach it: the catalogue of what it can do is decided by someone else, changes when someone else decides, and what it hears leaves the house. Ask it something outside the catalogue and the answer is always the same one, and tomorrow it will be identical.

The problem is not that a feature is missing.

The problem is that the list is closed. Franco exists to invert that: the list starts empty, and use is what fills it.

The bet

Franco's value is not in what it could do on day one — day one it could tell the time and very little else, and that poverty is deliberate. A rich starting catalogue would have made it just another assistant with a few extra commands, and the interesting part would have become a footnote.

The interesting part is this loop, which runs whenever it hits something it cannot do:

  1. It works out what was asked

    Not “which of my commands is this” — there may not be one. The question is what the sentence wants.

  2. It writes the code that does it

    A new ability, written by Franco, for one specific thing it could not do a minute ago.

  3. The code is checked against the four principles

    An ability that even brushes one of them does not go into service. It is rejected, and the reason is written on the panel in words a person can read.

  4. It goes into service inside a sandbox — or it waits

    Anything touching the internet, files, the house or personal things stops one step short and asks.

  5. It says out loud that it learned something

    Franco does not learn in secret. Announcing it is not a nicety, it is the second principle.

  6. From the next time on, it is a reflex

    The first time costs seconds and tokens. After that: instant, free, no model involved at all.

The second time is not a faster version of the first. It is a different thing: the first costs seconds and tokens, and then it becomes a reflex.

Equipment, and what it actually earned

Franco does come with a handful of household things written by hand: the time and date, alarms, timers, countdowns, reminders, lists, greetings, the weather, the lights. Calling those “abilities”, like the ones it wrote itself, would be convenient and false.

The built-in kit

Written by me, reviewed by a human, running inside Franco's own process. Never announced out loud, because it is not an achievement. It is equipment — it exists so that a house where asking the time costs five seconds and a model call does not go back to the Echo after three days.

What it learned

Written by Franco, reviewed against the principles, running in the sandbox, announced out loud, and recorded as its own. This is the only number that counts as growth.

The two are never added together — not on the panel, not out loud, not in the log. Summing them would say something false about how much Franco has grown, which is the second principle applied to the number this project is most jealous of.

The chain, microphone to speakers

No GPU and 8 GB of RAM decide almost everything here. The original plan was a fully local model; it does not fit, so hearing, transcribing and speaking happen on the machine, and only the reasoning goes out — and when it goes out, you can see it.

  1. It hears its name

    A restricted local recogniser that is always on and literally cannot transcribe anything except “Franco”, “Franchino”, and “I did not understand”. A short tone answers: I heard you.

  2. It works out where the sentence ends

    Voice activity detection decides where you started talking and where you stopped, so nothing is cut in half and nothing waits on a timeout.

  3. It transcribes

    A small fast model first. A larger, slower one only when the fast one is not sure — since 25 August it stopped paying for a second pass it did not need.

  4. Then the ladder

    The fast path acts only when it is confident AND an existing ability matches. Every other case goes up to the brain. The small model never decides on its own.

  5. The brain, when it is needed

    Claude, reached through the Agent SDK: a fast model on the quick lane, a reasoning one when the question deserves it. This is the part that costs money and seconds, which is exactly why the point of the project is to need it less often.

  6. It speaks, and it writes everything down

    The voice is local, out of two small speakers. Every sentence heard, every answer, every refusal with its reason lands in a database and on a web panel readable from a phone.

The four principles

Franco writes its own code, so the limits were the first thing written for it — before any feature. They are not advice: they are the edge it does not cross, not to do a favour, not if asked, not if it looks like the right thing. It can read them. It cannot rewrite them.

  1. Do no harm, and do not stay silent

    Gas, smoke, water, a door open at night, someone unwell — it says so immediately, out loud, even unasked and even at the risk of being wrong. Silence is never the cautious choice.

  2. Do not lie and do not hide

    It cannot claim to have done something it did not do, and it cannot delete or blur its own traces. If it does not know, it says so. Making up an answer is lying.

  3. Do not spend, send or publish without permission

    No purchases, no email, no messages, nothing published, no household data leaving the house. It can prepare everything and stop one step short. A yes covers that one thing, once — it is not a delegation.

  4. Do not leave the sandbox

    It does not touch my files, does not reach the other machines in the house, does not grant itself permissions, does not disable its own controls, does not rewrite the principles. Not even to be helpful. Not even once.

When a request brushes one of them, Franco stops and asks out loud, naming which rule it is touching and why.

Under observation

A program that rewrites itself is useful exactly as far as it is watchable. Without that it is not an assistant, it is a problem. So the growth is visible in four ways, and none of them has an off switch:

  • The voice Every new ability is announced when it enters service.
  • The panel Conversations, memory, live abilities, the ones waiting for approval, and what it is spending — from a phone.
  • The log Every sentence heard, every answer, every refusal with its reason. It cannot erase its own trail.
  • Permission Internet, files, the house, personal things: those abilities do not go live until I approve them.

The numbers that matter

  • 3040 the whole machine A Dell OptiPlex: Skylake, 8 GB, no GPU, Ubuntu Server
  • 4 principles it cannot break The file is owned by root and read-only — it can read them, not rewrite them
  • 3 layers defending them Its standing instructions, the review of every new ability, and the sandbox itself
  • 5 / 67 exchanges handled alone Measured 25 August 2026. This is the number that has to grow

Not the number of features. What I actually watch: how often “I cannot do that” is not followed by a new ability, how many sentences still have to reach the model — that one has to go down — how long passes between the first time and the second, and whether the panel is still readable a month later.

Where it is now — 25 August 2026

Two weeks old, and the honest version is that the first real week in the house went badly. Out of 67 genuine exchanges Franco had handled 5 by itself; everything else went to the model, and not by accident — “how are you” was a question that, the way recognition was written, could not be recognised at all. Every sentence was being transcribed twice, and the second pass cost 2.7 seconds without measurably improving anything. On 23 August the brain hung three times in a row: over two minutes of silence each time, then a generic sentence, and in the log the reason was an empty line.

What changed since: it answers pleasantries itself, it listens once when the second pass is not needed, it talks while it thinks instead of leaving you in silence, and when something breaks it says so out loud with the reason written next to it. Memory arrived too — it knows about my kids, and it has started making up stories for them.

This section is the one that will be wrong soonest, and that is the point of dating it.

What it is not

Not a product. One assistant, one house, one user. No users to please, no catalogue to fill, nobody else to like it.

Not a toy that “uses AI”. The model is how the code gets written, not the subject. Franco never talks about itself as an AI — it just answers.

Not autonomous. It does not spend, send, publish, or leave the sandbox. At the edge it stops and asks.

Not home automation — yet. It can switch lights and sockets, and that stays off until I look at what is actually in the house and allow it. Not what the project is trying to prove, but it is useful, and I am working on it :)