DEV Community

Cover image for I Stopped Building an AI Assistant. I Started Building an Operating System for My Life.
Abhijit Karode
Abhijit Karode

Posted on

I Stopped Building an AI Assistant. I Started Building an Operating System for My Life.

Disclosure: Mora OS is a personal project built on my own hardware using Codex Pro. This article was written with AI assistance, but it went through multiple rounds of questioning, editing, rewriting, and refinement by a human—me. 🙂

I live in the San Francisco Bay Area, where it is almost impossible to avoid the feeling that the future is being assembled one coffee shop away.

For the last few years, that future has mostly arrived as a chat box.

I like chat. I use it constantly. But the more I tried to make an AI genuinely useful in my life, the more obvious its central flaw became:

the chat box was making me do the orchestration.

I had to remember what to ask. I had to locate the context. I had to paste messages, dates, files, and earlier decisions into a prompt. I had to carry the answer back to wherever the work actually lived. Then, a week later, I had to explain the whole situation again.

That is not an assistant. It is a brilliant consultant with amnesia—and I am still its project manager.

So I began building something different.

I called it Mora OS: a private, local-first, portable Agentic AI operating system that could observe the systems I already use, maintain durable memory, decide what deserves my attention, propose actions, and let me supervise those actions across native Mac and iPhone experiences.

This is not a launch announcement or a victory lap. It is the story of building the system from the ground up, getting important things wrong, researching what the industry was learning in parallel, and gradually discovering that the operating-system metaphor was not marketing.

It was the architecture.

The moment chat stopped being enough

The same builder moving from manual chat orchestration to a layered personal operating system

My first instinct was predictable: connect more tools to an agent.

Email. Calendars. Messages. Files. A memory store. Later, health exports and a phone companion. If the model could reach everything, surely it would become useful.

It did become more capable.

It did not automatically become more trustworthy.

More connections created new questions:

  • Which sources were actually fresh?
  • Was a message sent to me, sent by me, or merely visible in a group?
  • Had I already handled the issue?
  • Was an item useful background intelligence or a personal obligation?
  • Was the model seeing evidence, stale memory, or a confident blend of both?
  • If the system proposed an action, who had authorized it?
  • If I dismissed something, would it learn—or simply show it again tomorrow?
  • If a connector failed quietly, would the rest of the system pretend nothing happened?

The problem was no longer “How do I make a better prompt?”

The problem was “What services must exist around the model so that the model can participate safely in my life?”

That is the question that turned an assistant into an OS.

The architecture emerged from failures

A hand-drawn cutaway of the Mora OS layers, from local connectors to memory, governance, cockpit, and Doctor

I did not design the whole system correctly on a whiteboard and then implement it. The architecture emerged because each shortcut failed in a different way.

The current design has six responsibilities.

1. Sense reality without pretending it is current

Mora OS ingests from local and connected sources through narrow adapters, with a strong preference for typed command-line interfaces.

Every observation needs provenance:

  • where it came from;
  • when the source produced it;
  • when the system observed it;
  • what freshness budget applies;
  • whether the pull was complete, partial, malformed, unauthorized, or unavailable.

“Connected” is not the same as “synced.”

“Authenticated” is not the same as “fresh.”

“No results” is not the same as “nothing happened.”

That sounds obvious until a beautiful dashboard confidently summarizes stale data.

One of the most important design decisions in Mora OS is therefore unglamorous: uncertainty is a first-class state. The system is allowed to say that it does not know.

2. Keep a portable brain outside the model

The memory system—Mora—lives locally and is portable independently of any one model or agent runtime.

This matters more than it first appears.

Models change. Context windows change. Agent frameworks change. Pricing changes. A personal history should not disappear every time the reasoning engine is replaced.

The research community has been converging on a similar idea from several directions. MemGPT framed long-context management like virtual memory in an operating system. The Generative Agents work combined observation, reflection, retrieval, and planning. More recently, Anthropic described context as a finite resource that must be deliberately curated in its work on context engineering.

My practical version is a librarian, not a bucket.

The builder as a librarian compressing observations into durable memory and paging only relevant context

Raw observations are not all promoted into permanent truth. Useful outcomes become compact durable memories with provenance. Repetition is compressed. Stale material can be reviewed. Retrieval is scoped to the task rather than dumping the entire archive into a prompt.

The goal is not “remember everything forever.”

The goal is:

preserve what remains useful, know where it came from, retrieve it when relevant, and let the owner move it elsewhere.

That is how personalization becomes an owned asset instead of a side effect of one vendor’s chat history.

3. Separate intelligence from obligation

One of the hardest bugs looked harmless.

Mora OS could retrieve a lively discussion from a group conversation and summarize it into Daily Intelligence. But downstream, the same content could be mistaken for something I personally needed to do.

That taught me to build two separate lanes.

Two evidence rivers remain separate: background intelligence and verified personal action

The intelligence lane asks:

  • Is this fresh?
  • Is it informative?
  • Does it match a verified interest, project, or relationship?
  • Is it worth a limited slot in today’s attention budget?

The personal-action lane has a much higher bar:

  • Is there a direct request?
  • Is ownership verified?
  • Is the responsibility mine?
  • Has it already been handled?
  • What evidence supports the proposed next step?

Background intelligence may enrich a briefing. It cannot silently become a task, an urgent notification, or an external action.

This pre-model gate became one of the most consequential pieces of the system. It reduces noise before paying for reasoning, prevents entire classes of false obligations, and creates an auditable explanation for what was admitted or withheld.

OpenAI’s practical guide to agents similarly emphasizes layered guardrails and human intervention for high-risk actions. NIST’s work on agent identity and authorization points to the same deeper issue: an agent needs more than intelligence. It needs bounded authority, identity, auditing, and non-repudiation.

4. Replace the inbox with an attention contract

Once the sources and gates existed, I made another mistake: I displayed too much.

A cockpit is not useful merely because it aggregates everything. If it turns five noisy feeds into one enormous feed, it has only centralized the anxiety.

Daily Intelligence now has an explicit attention budget. Items compete for a small number of visible slots. The system records what qualified, what was omitted, and why.

Agentic Tasks are different again. They are not “interesting suggestions.” A queued task needs:

  • an owner;
  • evidence;
  • an urgency reason;
  • a next step;
  • a state;
  • a condition for leaving the queue;
  • lifecycle and deduplication receipts.

The difference is subtle but foundational:

Daily Intelligence helps me understand. Agentic Tasks asks me to decide or act.

Both can open into Ask Mora for a deeper, evidence-grounded conversation. But chat is now a supporting surface inside the OS—not the OS itself.

5. Make action draft-first and approval-shaped

The easiest agent demo is also the most dangerous: “Watch it send the message.”

Mora OS starts from the opposite assumption.

Reads are cheap in authority. Drafts are reversible. External writes are consequential.

An action therefore moves through explicit stages:

  1. analyze;
  2. plan and preview impact;
  3. request approval when policy requires it;
  4. execute idempotently;
  5. verify the post-action state;
  6. append an audit receipt.

The system can become more autonomous by action type as trust is earned, but autonomy is not a personality setting. It is a policy decision backed by observed reliability.

That distinction matters because agent security is not solved by adding “be careful” to a system prompt. NIST’s work on agent hijacking highlights the danger of mixing trusted instructions with untrusted external data. In a personal OS, email, messages, web pages, and documents are all potentially hostile inputs.

The model can propose. The kernel decides what the proposal is allowed to become.

6. Diagnose the whole journey, not just the process

Then the Mac app went blank.

The backend was running. The health endpoint returned success. The application process existed. Builds had passed. From the infrastructure’s point of view, everything looked healthy.

From the user’s point of view, the product was a white rectangle.

A blank native window leads to a visual end-to-end Doctor that verifies the experience, not merely the process

That failure became the clearest definition of production quality I have found:

a system is not healthy when its components claim success; it is healthy when the user’s critical journey works.

Mora OS Doctor grew from that lesson. It checks the chain across sources, freshness, local memory, gates, Daily Intelligence, tasks, Ask Mora, notifications, audit receipts, native Mac state, and the iPhone companion. It preserves immutable probe evidence, deduplicates recurring issues, recognizes recovery, and fails closed when it cannot attest to a capability.

We also added a literal rendered-window regression. “Process running” can no longer stand in for “application visible.”

The boring disciplines became the real moat:

  • specification before implementation;
  • tests that exercise authenticated native behavior;
  • physical-device regression;
  • every shipped bug becomes a pinned check;
  • package and installed-app verification, not just compilation;
  • honest external gates;
  • no release claim from stale evidence.

Anthropic described a related truth in its account of building a multi-agent research system: the last mile becomes most of the journey, and small failures compound into wildly different agent trajectories. OpenAI’s more recent work on trace grading and evaluations reinforces the same direction. Agent quality has to be observed across workflows, not inferred from an impressive answer.

Why build this instead of just using OpenClaw?

A respectful choice between a broad general-purpose agent bazaar and a deliberately narrow personal OS workshop

This is not a section about declaring a winner.

OpenClaw is an ambitious general-purpose personal assistant platform. Its official documentation describes broad channel support, multi-agent routing, sessions, memory, skills, and an always-on gateway. That breadth is genuinely useful. If I wanted to connect many messaging surfaces quickly and experiment with a large ecosystem, it would deserve serious consideration.

Mora OS makes a different trade.

It is purpose-built around one owner, one portable memory system, native personal cockpits, explicit evidence, and a narrow authority boundary. That difference shows up in three places.

Security: smaller authority is easier to reason about

A general agent platform is powerful because it can accept many plugins, channels, tools, and execution paths. The same breadth expands the trust surface.

OpenClaw’s own onboarding warns that agents are powerful and that full-system access is risky. Its documentation places authentication material and session state in local agent directories, and the project actively ships security fixes—as any fast-moving, high-privilege platform must. Public advisories such as CVE-2026-26972 are a reminder that local execution does not automatically mean low risk.

Mora OS deliberately narrows the boundary:

  • typed, allowlisted CLI capabilities;
  • read-only ingestion by default;
  • isolated health-data processing;
  • local encrypted memory;
  • explicit freshness and provenance;
  • intelligence that is structurally action-ineligible;
  • approval gates for consequential writes;
  • post-action verification and append-only audit;
  • no assumption that an authenticated connector is current or safe.

Could a general platform be hardened to implement similar controls? Absolutely.

The difference is that in Mora OS these controls are the kernel, not optional assembly work left to the owner.

Personalization: memory is more than a persona file

A prompt can make an agent sound like it knows me. That is not the same as knowing the evolving state of my responsibilities.

Mora’s personalization comes from durable, provenance-linked structure:

  • decisions and their later contradictions;
  • responsibilities and ownership;
  • people and relationships;
  • handled versus unhandled commitments;
  • explicit dismissals and “not relevant” feedback;
  • recurring patterns compacted into durable memory;
  • retrieval scoped to the current task.

This is slower to build than a personality overlay. It is also much harder to lose when the model, runtime, or interface changes.

Cost: do less reasoning, more deliberately

Agent frameworks themselves may be free and open source, but continuous agent loops still consume model tokens, connector resources, storage, and operator attention.

Mora OS controls cost architecturally:

  • deterministic filters run before LLM calls;
  • repeated events are deduplicated before synthesis;
  • scheduled scans are bounded;
  • background intelligence cannot trigger expensive action planning;
  • local search and indexing handle retrieval;
  • high-capability models are reserved for ambiguous, high-value work;
  • attention cost is treated as a real cost, not just API spend.

This does not make Mora OS “free.” Local hardware, engineering time, maintenance, and frontier inference all have costs. Nor is this unique in principle; OpenClaw supports multiple model providers and local choices.

The advantage is alignment: Mora OS is optimized for the smallest amount of reasoning necessary to maintain one person’s trusted state—not for running the broadest possible general-purpose agent.

So my comparison is simple:

If the priority is… A broad personal-agent platform Mora OS
Rapid channel and skill breadth Strong fit Added deliberately
General-purpose experimentation Strong fit Secondary goal
One owner’s portable, structured memory Possible with configuration Core architecture
Evidence and freshness on every important item Implementation-dependent Required
Distinct intelligence and action lanes Implementation-dependent Kernel invariant
Narrow, auditable authority Requires careful hardening Default posture
Cost control before reasoning Configurable Built into admission
Native cockpit and personal responsibility model Varies Primary product

The best system depends on what you are optimizing for.

I am optimizing for trust accumulated over years.

What “learning” means without becoming creepy

I do want Mora OS to learn from me.

I do not want every click, correction, or private record silently blended into an unknowable model profile.

The learning loop is therefore explicit and two-speed.

Fast operational learning includes:

  • this item was dismissed for now;
  • this was not relevant;
  • these two signals referred to the same responsibility;
  • this source is currently stale;
  • this task was completed.

Slow policy learning requires stronger evidence:

  • repeated edits establish a communication preference;
  • repeated rejections tune the relevance gate;
  • a stable pattern may become a durable memory;
  • autonomy can graduate only for a specific action class with observed reliability.

Useful learning should leave receipts. Important memory should be inspectable. Deletion should be governed. Promotion from private memory into any shared context should be explicit.

The system should become more personal without becoming less legible.

Health data changed the meaning of “insight”

Adding health data made the architecture more serious.

The easy thing would have been to summarize medical documents and activity charts. The useful thing is harder: combine longitudinal signals from different sources, preserve their boundaries, detect trends or anomalies, and surface a careful question without pretending to diagnose.

That required isolation, freshness budgets, source-specific ETL, clinical-time ordering, deduplication, and language constraints. Raw health records remain outside the general personal-intelligence path. Only minimal derived signals can cross the boundary, with methodology and evidence references.

This taught me a broader lesson:

the more consequential the domain, the less acceptable it is for “AI insight” to be a beautifully worded guess.

The system must outlive today’s model

The builder adds a new module to a stable personal OS core as the agentic landscape continues to evolve

The agentic AI industry is changing too quickly to freeze the architecture around one framework.

Models will become better planners. Context windows will grow. Local inference will improve. Tool protocols and agent-to-agent standards will mature. New personal data sources will appear. Security guidance will become more concrete. Some of today’s patterns will look naïve.

Mora OS is designed to absorb that change at explicit seams:

  • models are reasoning engines, not the memory owner;
  • connectors are replaceable typed adapters;
  • memory is portable;
  • policies are versioned;
  • evidence contracts are stable;
  • tasks have durable state independent of an agent session;
  • native clients consume canonical state;
  • evaluations pin user-visible behavior;
  • Doctor probes make new capabilities observable.

The most durable component is not the model.

It is the harness that decides what the model may see, what it may propose, what it may do, and what the system remembers afterward.

Principles I would carry into any personal Agentic AI system

After building, breaking, and rebuilding Mora OS, these are the principles I trust most:

  1. Start with the responsibility, not the chat.
  2. Treat freshness, provenance, and uncertainty as product features.
  3. Separate useful intelligence from verified personal action.
  4. Keep memory portable and independent of the model.
  5. Retrieve context like an operating system pages memory—not like a prompt dumps a warehouse.
  6. Make consequential action draft-first, approval-shaped, idempotent, and audited.
  7. Use deterministic gates before expensive reasoning.
  8. Design attention as a scarce resource.
  9. Let every failure improve the harness and the regression suite.
  10. Never confuse a healthy process with a working user journey.
  11. Keep the kernel stable and the edges replaceable.
  12. Earn autonomy one action class at a time.

Where Mora OS is today

This is the current architecture—not a promise that the work is finished.

The current Mora OS architecture, including local sources, portable memory, native Mac and iPhone apps, responsibility reconciliation, Agentic Tasks, health isolation, audit, retention, and proactive Doctor

It already spans local and connected sources, portable memory, native Mac and iPhone experiences, Daily Intelligence, governed Agentic Tasks, health intelligence, retention review, a responsibility ledger, notifications, audit, and a proactive end-to-end Doctor.

It also still has real edges.

Connectors lose freshness. Operating-system permissions fail. Mobile networks disappear. Relevance gates over-filter. Memory can become noisy. Native automation can expose platform quirks. A test can pass while the installed application is blank.

That is exactly why I no longer think of this as “building an assistant.”

I am building a small personal operating system whose job is to keep learning without forgetting its constitution:

  • my data remains mine;
  • evidence precedes confidence;
  • authority stays bounded;
  • actions remain governable;
  • memory stays portable;
  • failures become visible;
  • new capabilities plug in without weakening the core.

The architecture above will change. It should.

The industry is still discovering what an agentic operating system needs to be, and I am still discovering what I need mine to become.

We are just getting started. DM for early access to Mora OS

Top comments (0)