Skip to main content
ITISYOU
Menu
In developmentIn development — public engineering record

AI-First OS

Could a phone let AI propose real actions, while only separate, deterministic code decides what is actually allowed to happen?

AI-First OS is a research project and specification for a phone operating system built around one rule: intelligence may propose, but only deterministic code may permit. A baseline build has booted on a real development phone, and the project's own authority code is being built on top of it now. It is private, and it is not open source.

Where it stands

In development and not released: there is nothing to install, sign in to or try. Its second milestone — a baseline build booted and inventoried on a real development phone — passed on 8 September 2026, with its open items listed rather than waived. What is public is its engineering record and this account of it.

Last verified

Public engineering record: ai.itisyou.app

What it is, in plain terms

AI-First OS is a research project: a design, and a growing implementation, for a phone operating system built around a single rule. Software agents built on AI models are free to suggest things a phone should do — open an app, send a message, change a setting — but they are never the ones who decide whether it actually happens. That decision is made by ordinary, deterministic code: code that either allows a specific, well-defined kind of request, or it does not, and nothing about how convincing or well-phrased the request sounds changes that.

I think of the two halves as an intelligence layer, which is allowed to be creative, wrong, or ambitious, and a security layer, which is not allowed to be any of those things. The intelligence layer never talks to the security layer in free-form language. It has to ask in a fixed, structured way — the software equivalent of filling in a form rather than making a case — and the security layer only ever reads the form. Nothing about the wording of a request, however it is phrased, can change what the form says.

This project is not a phone skin, a launcher, or an assistant bolted onto an existing operating system. It starts from the operating system itself, precisely because the rule above needs to be true underneath everything, not just in the parts a user can see.

Its own public engineering record, at ai.itisyou.app, calls it ITISYOU OS (AIOS). It is a different project from the x86 research kernel described on the ITISYOU OS page, and I use the name AI-First OS here so the two cannot be confused. The engineering record lists what each milestone showed and how; this page explains why the project exists.

Why I built it

I wanted to find out whether a phone could genuinely let AI act on your behalf without quietly making the AI the thing deciding what is safe. Assistants tend to sit at one of two extremes: they ask for confirmation on almost everything, which defeats the point of delegating, or they are trusted with a wide licence and the design hopes for the best. I wanted to see whether a narrower design was possible: one where the model’s job is limited to proposing, and a separate, boring, reviewable piece of code carries all the responsibility for permitting.

If that split can be made to hold under real pressure — real code, real tests, real conflicting changes from different lines of work on the same design at once — it says something useful about how much of AI safety is actually an architecture question rather than a model question. If it cannot be made to hold, that is worth finding out too, and finding it out early, on a research project, rather than after it is running on somebody's phone.

The problem underneath

The uncomfortable version of the problem is that a model is, structurally, a thing that produces plausible text. It can be prompted, confused, or manipulated, and it can be extremely convincing while being wrong. If a phone lets that kind of output flow into the part of the system that grants permissions, the model has effectively become the security boundary, whatever the design documents claim about it.

My starting position was that this has to be treated as unacceptable by construction, not managed by good intentions. So the question the whole project is built around is a narrow one: can you build a real phone operating system where the answer to "did the AI decide this was safe" is always no, even under the kind of pressure — a badly worded prompt, a compromised model, two lines of work changing the same rule at once — that would make a softer design bend.

How it works, without the jargon

In plain terms, the system is built in layers, and the number of layers matters less than what separates them. Near the bottom is code that behaves the same way every time it is given the same input: it grants or refuses named actions, and it writes down what it did. Above that sits the part where AI agents operate — proposing, planning, drafting — but every one of their proposals has to pass through the same narrow gate as everything else, expressed as a typed, structured request rather than as sentences a person or a model wrote.

The gate does not interpret language; it checks a request against fixed rules and either allows it or it does not. Nothing about how a request arrived — which agent asked, how it was worded, how confident it sounded — can substitute for meeting those rules. Above the agents sits the part a person actually sees and talks to.

The design also assumes the AI part can be switched off or fail, and the rest of the phone is meant to keep working in a reduced way rather than stop, because a system that only works when the model is healthy is not the system this project is trying to build.

What building it taught me

The clearest lesson so far is how much discipline the “typed, not free text” rule demands in practice. The project has automated checks that scan the parts of the code allowed to make decisions and fail if any of them accepts free-form text. When those checks were added, they found existing places that did — small helper functions that looked harmless — and the findings were recorded and fixed rather than exempted.

The second lesson came from running two lines of work on the same design at once and then bringing them back together. Real disagreements showed up in the test suites — not one side obviously right, but genuinely conflicting expectations about the same behaviour. Three of them were written down as findings on 6 September and left visibly failing. One available fix was refused outright: it would have made a test pass by moving the property it guards somewhere the test could no longer see, which is a worse outcome than an honest red. By the integration pass of 7 September the suites passed in full.

The third lesson is about evidence. A result from the development machine and a result from the phone are different kinds of claim, and the project labels every result with where it was produced. That mattered the day the work moved onto the device: the second milestone could be declared passed for exactly what it covered — build, boot and inventory — while things it could not test, such as calls over the mobile network without a provisioned SIM, stayed listed as unverified instead of being waived.

Where it stands today

This is a private research project, not released, and not something anyone else could install or try. The specification is frozen at a named version, and the implementation is growing underneath it in numbered work packages, each of which has to produce its own evidence before it counts. The first milestone — that the design’s core contracts hold, checked with evidence gathered on the development machine — passed on 5 September 2026. The second — a baseline build booted and inventoried on a real development phone — passed on 8 September 2026, with 306 of 306 tests in its closure.

By the integration pass of 7 September 2026 the automated test suites covering the Rust and Python parts stood at 753 and 534 tests respectively, all passing, after three disagreements between parallel branches of work had been recorded, left failing and then properly fixed.

What has not been shown yet matters as much. The project’s own authority code — the deterministic part that grants or refuses requests — is being built and checked on the device now, one piece at a time. Its network rules are designed but not yet demonstrated on the phone. Calls and other features that need a mobile network could not be tested at all. The project is private, and there is no plan to open the source.

Where it may go

Next: finish the authority core and verify it on the device, piece by piece, then prove the network rules there too. Then: close the open items the second milestone recorded rather than waived. Later, if the device evidence keeps agreeing with the design: extend the same discipline — propose, never permit — to more of what the phone can do.

None of this is a release plan. It is a description of the order in which I intend to keep testing the central idea, because a rule that only holds on a development machine is not yet a rule that holds on a phone, and the second one is the one that would actually matter.

For developers: how the propose/permit boundary is built and verified

The design separates "propose" from "permit" by making the boundary between them a data contract rather than a piece of prose. Anything that wants the phone to do something has to express it as a typed request naming a specific, enumerable action — not as an instruction in natural language — and the part of the system that decides only ever reads that structure. A request that cannot be expressed in the fixed vocabulary cannot be granted at all, no matter how the surrounding code is written.

Every decision the system makes about whether to allow a request is recorded, before and after it is evaluated, so what happened can be reconstructed rather than inferred from behaviour afterwards. The project treats "no model output ever reaches the part of the system that grants permissions" as a rule to test for directly, with automated cases that attempt to violate it and are expected to fail every time.

The AI-facing layer is treated as something that can be absent. Subsystems are written so that when a model is not available, wrong, or has been switched off, the rest of the design still has a defined, deterministic behaviour rather than an undefined one — which is part of why the project counts test coverage on the deterministic side as seriously as it does the AI-facing side.

Development happens across more than one line of work at a time, which is useful for making progress but creates a real risk that two branches quietly assume different things about the same rule. Reconciling that is treated as verification work in its own right: when automated evidence from two branches disagrees, the disagreement is recorded as an open finding rather than resolved by simply keeping whichever branch merged first.

How it works

Can an AI-first phone genuinely delegate real actions to AI agents without ever letting a model decide what is safe?

The loop, step by step

  1. A person or system event creates an intent for the phone to act on
  2. A local AI agent may propose an action in response
  3. Every proposal is expressed as a typed, structured request — never free text
  4. Deterministic code checks the request against fixed rules
  5. The request is permitted or refused; nothing about how it is phrased changes the outcome
  6. The decision, and what led to it, is recorded

The principle underneath

Propose, never permit

AI agents may suggest, plan and draft, but the decision about whether an action actually happens is always made by separate, deterministic code that either allows a specific, well-defined request or does not. How convincing or well-phrased a proposal is has no bearing on that decision.

What exists today

Implemented in the current code. Nothing here is a plan.

  • typed-requests

    Requests are typed, not text

    Anything an AI agent wants the phone to do has to be expressed as a structured request naming a specific action, not as a sentence. The part of the system that decides is written so that it can only read requests in that form.

  • layered-design

    Intelligence and authority are separate layers

    The design is organised as a small number of layers, with the layer that proposes kept structurally apart from the layer that permits, so a change to one does not quietly change what the other is allowed to do.

  • milestones

    Two milestones passed, on the host and on a phone

    The first milestone — that the design’s core contracts hold — passed on 5 September 2026 on evidence from the development machine. The second — a baseline build, boot and inventory on a real development phone — passed on 8 September 2026, with 306 of 306 tests in its closure.

  • test-suites

    Automated coverage across two languages

    By 7 September 2026 the project's automated suites stood at 753 tests on the Rust side and 534 on the Python side.

  • open-findings

    Disagreements recorded, not smoothed over

    When parallel branches of work produced three conflicting test results, they were written down as findings and left visibly failing rather than resolved by picking a side, until each was properly fixed.

  • deterministic-fallback

    Built to keep working without the model

    Subsystems are written to have a defined, deterministic behaviour when the model behind them is unavailable, wrong, or switched off, rather than an undefined one.

What was verified

Each result carries the weight its level allows and no more. These are the project's own records of itself — nobody else has reproduced them.

DemonstratedRun on the verified device and observed to work.
  • The first milestone — the design's core contracts hold

    Passed on 5 September 2026, checked with evidence gathered on the development machine.

  • A baseline build boots and is inventoried on a real development phone

    The second milestone passed on 8 September 2026 on device and host evidence, with 306 of 306 tests in its closure. It covers build, boot and inventory only, and its record lists what remains unverified.

  • Disagreements between parallel branches of work are caught rather than hidden

    Three cross-branch test conflicts were recorded as findings on 6 September 2026 and left failing until fixed; the integration pass of 7 September passed in full.

TestedCovered by automated or repeated manual testing.
  • Automated test coverage across the Rust and Python parts of the implementation

    753 Rust tests and 534 Python tests were passing on 7 September 2026.

LimitedShown only under specific conditions, stated alongside it.
  • The full design specification is implemented

    Parts of the deterministic authority layer and the audit writer are implemented and unit-tested; large parts of the specification remain design rather than code.

Not claimedExplicitly outside what this prototype does or asserts.
  • The security design is enforced on the phone

    Only a baseline build, boot and inventory has been shown on the device. The project’s own authority code is being built and checked there now, and its network rules are designed but not yet demonstrated on the device.

  • Everyday phone features work

    Calls and other carrier features could not be tested without a provisioned SIM, and are recorded as unverified rather than claimed.

  • Independent review of the design or its safeguards

    Nobody outside the project has reviewed the design, the code, or these results. Everything here is the project's own account of itself.

Rules it holds to

Decisions made on purpose, so none of them has to be inferred from silence.

A proposal cannot be expressed as a typed request
It cannot be permitted, regardless of how it is phrased or where it came from.
The model is unavailable, wrong, or switched off
The affected subsystem falls back to a defined deterministic behaviour rather than an undefined one.
Automated evidence from two branches of work disagrees
The disagreement is recorded as an open finding rather than resolved by picking a side to make the numbers agree.
A capability has not yet been exercised on the device
It is not counted as demonstrated. Host evidence is labelled host evidence, and device evidence is labelled device evidence.

Host evidence and device evidence are kept apart

Some results come from the development machine and some from a real development phone. Every result is labelled with where it was produced, and the first is never described as though it were the second.

Private, not open source

The project is private by decision, not because it is unfinished. There is no plan to publish the source.

A research project, not a phone

This is a specification and a growing implementation, not a product with a release date.

Problems and lessons

Real problems from the project's own records, with what was found, what changed and how it is checked now.

  1. 01

    Keeping AI proposals out of the part of the system that grants permissions

    What was found
    The risk explored early was whether a convenient shortcut — passing a richer piece of context through where a plain, structured flag would do — could let something closer to free text reach the decision point.
    What changed
    The rule was made structural rather than a convention: the part of the system that grants permissions is written so that it can only read a fixed, typed request, and anything that does not fit that shape is rejected before it is evaluated.
    How it is checked now
    Automated cases attempt to pass richer, less structured content through the boundary and are expected to be rejected every time; the suite runs as part of the same gate as everything else.
  2. 02

    Making progress honestly before the device was available

    What was found
    Some of what the design specifies depends on the real device it will eventually run on, which was not yet available to test against.
    What changed
    The first milestone was defined and checked entirely on host-side evidence and recorded as exactly that. The second milestone moved to the phone itself, and its record lists what it did not cover — calls over the mobile network, for instance, could not be tested without a provisioned SIM — instead of waiving it.
    How it is checked now
    Milestone one passed on 5 September 2026 on host evidence; milestone two passed on 8 September 2026 on device and host evidence, with its open items published alongside the pass.
  3. 03

    Reconciling parallel lines of work on the same design

    What was found
    Work proceeds across more than one branch at a time, and bringing two branches back together surfaced genuine disagreements about what the same rule should do, not just conflicting text.
    What changed
    Rather than resolving the disagreements quickly to make a green test run, each was written down as a finding, left visibly failing, and fixed deliberately — including one quick fix that was refused because it would have satisfied a test’s wording while moving the property it guards somewhere the test could not see.
    How it is checked now
    Three such conflicts were recorded on 6 September 2026; by the integration pass of 7 September the suites passed in full, with 753 Rust and 534 Python tests.
  4. 04

    Making the AI layer optional rather than load-bearing

    What was found
    A design where every subsystem quietly assumes the model is present and correct is a design that has made the model part of its safety case, which was the outcome to avoid from the start.
    What changed
    Subsystems are written against a defined fallback behaviour for when the model is missing, wrong, or disabled, so that removing the model changes what the phone can do, not whether it behaves as designed.
    How it is checked now
    Fallback behaviour is exercised by the same automated suites as the rest of the code, rather than treated as a separate, less-tested path.

Limits and unknowns

What it does not do, and what it is not — stated here rather than discovered later.

Limitations

  • Only a baseline build, boot and inventory has been shown on the phone. The project’s own authority code is still being verified there, and its network rules have not yet been demonstrated on the device.
  • The project is private, not released, and there is no plan or date for that to change.
  • Large parts of the specification remain design rather than implemented, tested code.
  • Automated test coverage is the project's own measurement of itself, run on the machine that built the code.
  • Calls and other features that depend on a mobile network could not be tested without a provisioned SIM, and are recorded as unverified.
  • Its only public surface is an engineering record. Nothing about it can be installed, tried or signed in to.

What it is not

  • Not released, and not close to being something anyone could install — there is nothing to install and nothing to try.
  • Not a working phone for daily use — only a baseline build, boot and inventory has been shown on the device.
  • Not open source — the project is private by decision, and there is no plan to publish it.
  • Not a finished specification — large parts of the design remain to be implemented and tested.
  • Not independently reviewed — every claim on this page rests on the project's own records.

Where it may go

Directions the project's own plans record. Intentions, not promises — and not dates.

  1. Next: finish the authority core and verify it on the device, piece by piece
  2. Next: prove the network rules on the device, which today are designed but not demonstrated
  3. Then: close the open items the second milestone recorded rather than waived
  4. Later, if device evidence keeps agreeing with the design: extend the same propose/permit split to more of what the phone can do

Technical detail

For developers. Nothing here is needed to understand the rest of the page, and nothing here is an address, a port or a path.

A typed contract, not a prompt, crosses the boundary

Every proposal a local AI agent makes is expressed as a structured request naming a specific action, and the part of the system that decides is written so that it can only read requests in that form — there is no path by which free-form model output reaches a decision.

Layers, not levels

The design is organised into a small number of layers with a clear separation between the layer that proposes and the layer that decides. The internal numbering of those layers is not published; what matters publicly is that the separation exists and holds.

Milestones are staged by evidence class

The project distinguishes host-side evidence, gathered on the development machine, from device evidence, gathered on the phone the design targets, and labels every result with its class. The first milestone was host-only; the second added device evidence.

Automated suites in two languages

The implementation spans Rust and Python, each with its own automated test suite; as of 7 September 2026 the two stood at 753 and 534 tests respectively.

Cross-branch reconciliation as a verification step

Bringing parallel lines of work back together is treated as a place defects are found, not just a mechanical merge, and disagreements it surfaces are recorded rather than resolved by whichever branch happened to merge first.

What this is based on

Sources for this page

  • Returns HTTP 200 over a valid certificate. It presents the project, under the name ITISYOU OS (AIOS), as a private phone operating system in which cooperating local agents may propose and only deterministic authority may permit, with its status, roadmap and proofs. On 11 September it reported the second milestone passed.

    Checked 11 September 2026

  • AI-First OS specification and integration record — inspected directlyprivate source — described, not linked

    The specification, milestone records and main and integration branches were inspected. They record the first milestone passed on 5 September 2026 on host-only evidence; the second passed on 8 September 2026, covering a baseline build, boot and inventory on a real development phone, with 306 of 306 tests in its closure and its open items listed rather than waived; and an integration pass on 7 September with 753 Rust and 534 Python tests passing. Work on the project's own authority code was being built and checked on the device on 11 September.

    Checked 11 September 2026

The public engineering record above can be checked by anyone. The rest rests on the project's private records — its repository, test results and engineering history, inspected directly. If anything here turns out to be wrong, the corrections page explains how it gets fixed.