Skip to content
←
MIKO companion in focused code review posture
Experimental • Windows • Local-First • 2026Active Prototype

A desktop companion that responds to context, not just prompts.

MIKO started as an experiment: could a desktop companion feel present without constantly asking for attention? It watches a small set of local context signals and responds through posture, motion, and short reactions.

This is an early snapshot of the project. MIKO is still in active development while I keep refining its behaviour, interaction model, and Windows integration.

Role
Concept • Interaction • Engineering
Platform
Windows
Runtime
WPF + Python Sidecar
Status
Active Prototype
01 / The Idea

Designing the In-Between

I didn’t want MIKO to become another app I had to stop and talk to. She should be there when useful, and easy to ignore when she isn’t.

A companion should fit into your workflow, not fight for your attention.

Silence has to be one of her responses. A change in the foreground app or media state shouldn’t make her interrupt every time.

Core Design Principle
02 / Personality as Interface

A Companion Has Moods

MIKO’s personality comes through in how she moves. Different desktop contexts switch her into different poses, reactions, and short lines instead of leaving the sprite as decoration.

Coding / Focus

01

When a code editor or terminal is in front, MIKO shifts into a more focused state.

“checking the logic” · “review mode”

Watching / Media

02

Video in the foreground puts her into a quieter spectator state.

“movie mode” · “I’m watching too”

Curious / Browsing

03

Research, documentation, or general browsing makes her more curious and reactive.

“what are we reading?” · “new tab adventure”

Annoyed / Relocation

04

Move her to another monitor or keep throwing windows around and she gets visibly annoyed.

“wrong monitor” · “bring me back”

These are only four examples. MIKO also has listening, idle, celebration, and standby states.

03 / From Context to Reaction

Local Context, Real Reactions

MIKO watches a small set of local signals: what app is in front, whether media is playing, what kind of browser context is active, and whether I’ve gone idle. Those signals are weighed against each other before she decides whether to react at all.

Lightweight + Local-First

How Context Becomes a Reaction

Observe → understand → filter → express

  1. 01 / Signals

    Desktop signals

    Foreground app • Media state • Browser context • Idle state

    Code.exe + Spotify + active

  2. 02 / Synthesis

    Build context

    Combines those signals into a small local picture of what’s happening.

    Coding + music → work stays primary

  3. 03 / Arbitration

    Priority + cooldown

    Decides which signal matters most and prevents MIKO from reacting too often.

    Low priority + cooldown → stay quiet

  4. 04 / Output

    MIKO reaction

    Mood • Animation • Short response

    Focused • subtle nod • “Keep going”

01

Coding + music

Coding takes priority while music remains background context.

02

Watching video

When video is the main activity, MIKO settles into a quieter watching state.

03

Idle / away

If I’m away for a while, MIKO settles into standby instead of trying to pull me back in.

All of this stays local. MIKO reads lightweight OS and browser signals, not keystrokes, clipboard contents, or the documents I’m working on.

04 / Context Lab

Context Lab

Try the same desktop context under different reaction rules and see when MIKO responds, stays quiet, or changes posture.

Context Lab • Behaviour Simulation
Pipeline:Signals → Arbitration → Posture
Select Context:
Interruption Modenormal
State: ARBITRATION
“review mode”
MIKO companion in coding posture
Sprite: codingFrame: 01 / 06
Context State & SignalsSignal Arbitration
Foreground App:Code.exe (VS Code)
Window Title:router.ts — portfolio [Workspace]
Audio State:Audible background music (Spotify)
Inactivity Timer:Active keyboard / mouse input
Browser Bridge:None (Editor focused)
Why This State Won

The code editor has higher priority than background music, so the coding state wins.

Reaction PolicyPERMITTED (NORMAL)

Normal allows short peripheral reactions while respecting the current cooldown.

Cooldown: 15m intervalSuppression: 120m window
Inspectable by Design

The lab shows the signals, priorities, cooldowns, and recent events behind each reaction, so I can see why MIKO chose a state instead of guessing.

Representative Event TracePersona Studio
Code.exe→coding context selected
Active
Spotify.exe→restrained by coding priority
Restrained
Idle > 90s→standby posture
Standby
05 / Architecture & Privacy

Designed for Your Machine

01 / Local-First Core

127.0.0.1 Loopback

The WPF client and Python sidecar talk over 127.0.0.1. Preferences and memory stay local too, so core desktop behavior doesn’t need a remote service.

02 / Local Context

Strict Privacy Boundaries

MIKO reads window titles and media metadata just long enough to understand the current context. She doesn’t read keystrokes, clipboard contents, or source files.

03 / User-Configured Endpoints

Optional AI Integrations

MIKO doesn’t depend on a hosted LLM. If I enable model-backed features, I choose the OpenAI-compatible endpoint, including local options such as LM Studio.

Real Prototype Interface

Persona Studio • Local runtime controls

Persona Studio exposes what MIKO can sense and remember, so those controls aren’t hidden behind the companion itself.

Persona Studio Awareness and Privacy Controls panel in the working Windows prototype
Persona Studio • Sensor Toggles & Privacy BoundariesWorking Prototype UI
06 / Prototype Status

Where MIKO Is Today

MIKO is still experimental. The Windows 11 runtime works today, but packaging, multi-monitor behavior, interaction timing, and parts of the app/sidecar architecture are still being worked on.

What Works Today

  • Windows desktop companion runtime
  • Context awareness + reaction rules
  • Custom mood animations
  • Editable local memory + Persona Studio
  • Quiet and Focus modes
  • Local voice + optional user-configured model endpoint

Still Exploring

  • Standalone packaging + easier installation
  • Multi-monitor and high-DPI edge cases
  • Simplifying the app / sidecar split
  • Interaction timing, voice quality, and response tuning