TL;DR

  • Myway is a personal ambient intelligence system running on my local machine: it monitors my context and acts on it without being asked.
  • It runs on a Node.js/SQLite stack via PM2, exposed at localhost:48291, with a real-time context API.
  • It sends morning briefs, evening recaps, proactive nudges, and system health alerts automatically.
  • The key design principle: the AI does work between conversations, not only during them.
  • The code is at github.com/uchibeke/myway. First commit: March 10, 2026.

Most AI tools wait for you to talk to them. Myway doesn't.

You open ChatGPT, you ask a question, you get an answer. Then you close the tab and go back to whatever you were doing. The AI was useful for a moment, then it went dormant. You have to think to use it.

That works for a lot of tasks. For the things that matter most, my calendar, my most important tasks, my projects, I want something different from a tool I remember to consult. I want something that notices and acts on its own.

Myway is my answer to that. It's an ambient intelligence layer: an AI that runs continuously alongside my life, has context about what I'm doing, and acts on that context without waiting for a prompt.

What "ambient" means in practice

Ambient intelligence is a simple idea: the environment is aware and responsive. You don't query it; it monitors and responds. Think of it like a well-designed immigration system that knows your credentials and updates your permissions before you reach a checkpoint, because the system is watching and prepared.

In practice, for Myway, this means:

Morning: At 7am, before I'm fully awake, Myway has already reviewed my calendar, surfaced my Most Important Task, pulled the top unread emails by relevance, checked GitHub for overnight activity, and sent me a briefing, to email and Telegram, that gives me a two-minute read on the shape of my day.

Throughout the day: Myway monitors for things that should trigger an action without my involvement. Meeting in 30 minutes? Reminder sent. Task overdue by more than 48 hours? Resurface with a reframe. Mid-day check-in on the MIT. A dinner suggestion from the recipe vault in the late afternoon.

Evening: A recap that tells me what happened, what I didn't get to, and what's setting up for tomorrow.

None of this requires me to do anything. It just happens.

The architecture

Myway runs as a Next.js application on my local machine. PM2 manages the process. A SQLite database stores tasks, calendar entries, connection tokens, briefings, and context. A single REST API (localhost:48291) exposes everything the AI layer needs.

Core data model

The context API (GET /api/openclaw/context) returns a structured snapshot of my current state:

{
  "mit": { "title": "Reach out to Nuvion", "dueAt": 1771862400, "priority": 2 },
  "tasks": { "total": 88, "completedToday": 5, "overdue": [...] },
  "calendar": { "upcoming": [...], "nextEvent": {...} },
  "email": { "unreadCount": 5, "connectionStatus": "connected" },
  "health": { "status": "degraded", "memoryMb": 864, "disk": {...} },
  "briefing": { "morningDone": false, "lastEvening": 1771820380 }
}

This is the single source of truth that every heartbeat, cron job, and agent decision reads from. No separate queries, no stale state.

Alongside the API, Myway writes read-only Markdown snapshots into the OpenClaw workspace after every sync or mutation: CALENDAR.md, TASKS.md, RECIPES.md, NOTES.md, CONNECTIONS.md. The database stays the source of truth. The files give the agent context without direct database access.

The heartbeat

The AI layer is OpenClaw's heartbeat agent. It wakes on a schedule (roughly every 30 minutes) and on demand: when a task is completed or a connection syncs, Myway posts to OpenClaw's wake hook and the heartbeat fires immediately instead of waiting for the next tick.

Each heartbeat runs through the same checks:

  1. State read: fetch live context
  2. System health check: memory, disk, PM2 processes, connection status
  3. Immediate signals: calendar events under 30 minutes away, critical alerts
  4. Time-aware actions: morning brief, MIT check-in, evening recap, dinner suggestion (by window)
  5. Ambient opportunities: overdue tasks, completed tasks to acknowledge
  6. Periodic sync: GitHub activity refresh

Each step has specific trigger conditions and dedup rules. The result is a system that acts on a schedule without acting randomly.

Every agent action, allowed or blocked, also passes through APort agent guardrails and shows up in a live feed inside Myway, with a kill switch that stops all agent actions at once. Every Myway install is an APort install.

Persistence and memory

Everything Myway knows about what it's already done is stored in SQLite. Every briefing sent is recorded. Every alert has a dedup key. OpenClaw's memory system carries the rest: a per-session log and a distilled long-term summary the agent reads on wake.

This matters because the AI wakes fresh each session. The files are how it has continuity.

What tech stack does Myway run on?

LayerTechnology
RuntimeNode.js v22
Process managerPM2
DatabaseSQLite via better-sqlite3
API frameworkNext.js App Router (API routes)
AI layerOpenClaw (model configurable) or any OpenAI-compatible API
EmailGmail OAuth via googleapis
MessagingTelegram Bot API
External integrationsGitHub API, Google Calendar OAuth
GuardrailsAPort agent guardrails (OpenClaw plugin)

No cloud dependency, no subscription. Your agent, your data, your machine.

What building it taught me

State management is the hard part

Getting a model to write a good morning brief is easy. Knowing whether a morning brief has already been sent today, whether the MIT check-in already went out, whether this GitHub event already triggered an alert: that's the hard part.

Every ambient system lives or dies on its dedup logic. Before building any proactive feature, the first question is: what is the unique key for this event, and how do I prevent sending it twice?

Proactive systems need explicit quiet rules

An AI that always acts is worse than no AI. Myway has explicit quiet hours for most nudges, rate limits per message type, and minimum intervals between consecutive messages.

The wrong version of this system would wake you up at 3am to tell you your MIT is overdue. The right version waits until 9am and says it calmly.

Automation reveals what you actually care about

A system that tracks task completions will surface patterns you didn't set out to measure. Infrastructure tasks get done at high rates. Relationship tasks (following up with people, sending feedback, returning calls) get deferred. The system shouldn't judge that. It should show you the pattern until you decide what to do about it.

A personal AI that only responds to prompts can't do this. One that observes continuously can.

Where Myway goes next

Myway is a single-machine system today. Over time, I want to explore what it looks like to share context models across devices, so the AI knows your full context regardless of where you're working from.

I'm also working on making the heartbeat protocol more legible. Right now it's a dense set of trigger rules that only makes sense if you built it. I want it to be something any developer can read, adapt, and deploy for their own life.

If you're building something similar, or thinking about it, I'd like to know. Ambient intelligence, continuous context and proactive action are going to matter more as AI agents get better. Getting the architecture right early is worth the investment.

Myway is open source at github.com/uchibeke/myway and installs with npx @uchibeke/myway. It runs on OpenClaw or on any OpenAI-compatible API key.

  • ai
  • personalproductivity
  • developertools
  • autonomousagents