An opinionated, agent-native .NET meta-framework. Add what the business needs; keep the application readable.
See what is running, give it a stable .internal name, and make it trusted - no accounts, no cloud.
Your real browser, for any MCP agent - visible, local, and yours.
Turn spare computers into a small, sovereign service garden. Ask for what you need; Zen Garden tends the machinery beneath it.
Opt-in capabilities for Koan. Add more reach without giving the application a second architecture.
Small Rust crates: one symmetric API over divergent platform mechanisms.
A cognitive-architecture canon for artificial companions.
A breathing companion you hold, not watch.
From V0 to V1 in meaningful, small steps. Reference only what the use case needs; Koan composes it around the domain and shows what changed.
Reference the first capabilities, describe the domain, and run a real web application with storage - without speculative layers.
A new reference brings the next coherent capability into the same application model, with configuration only where the choice needs it.
Entities, rules and workflows remain the application. Repeated infrastructure mechanics stay in the framework.
Koan is not a stack every application adopts at once. It is a family of capabilities with one composition model, added in the order the domain and use case require.
Business domain + Web + Storage + Identity + Tenancy + Jobs + Search + MCP
Add only what the use case earns. The boot report, capability set and composition lock explain what each reference contributed.
Business progress per change: each small addition delivers a useful vertical result.
More business intent per token: one grammar replaces repository archaeology and invented wiring.
Certainty per deployment: startup, health and composition evidence say what actually assembled.
Growth without architectural drift: capabilities join through shared, inspectable boundaries.
The current supported public path builds from the active source branch. Start the sample, then create and read persisted domain data through its composed web surface.
Now ask the generated entity surface for the data it persisted:
curl http://localhost:4998/api/todo
The response is useful; the startup report and lockfile are the receipts for how it came to be.
See what is running, give selected services stable private names, and add trust when they need it. People, applications and agents can work from the same current picture.
Run one command and see services by what they are. No daemon, account, DNS change or certificate ceremony is required to start.
Turn selected services into stable .internal names, then add private certificates where HTTPS earns the extra trust.
Status, health, events, the dashboard, standard integrations and MCP describe the same local service picture.
Koi instruments the local service layer, then lets that evidence participate in naming and trust. Each capability remains useful alone; the composed result is the reason they belong together.
service appears -> discovered -> named .internal -> optionally trusted -> visible to people and agents
The .internal reservation prevents a future public-TLD collision; Koi still supplies the local DNS authority, forwarding path, private CA and trust distribution that make the name useful.
Network mechanics leave application code: publish what the service offers without rebuilding discovery, naming and cleanup per platform.
More environmental truth per token: one bounded inventory replaces port probing, stale host files and network guesswork.
Consolidation without forced replacement: real status, native service management and standard DNS, ACME and Prometheus doors.
A bounded local substrate: daemon or embedded, no cloud dependency, explicit authority and candid anti-scope.
Install the current release for your platform, then ask the network one useful question before committing to a daemon, DNS zone or private CA.
Browse the local network now:
koi mdns discover
Discovery runs standalone. If the result earns a permanent place, install the native service and add naming, health, containers or trust in the order the network needs them.
Give an agent the browser where your work already lives. The work stays in front of you, and a boundary is there when the job needs one.
Describe the job. Familiar browser tools and useful errors keep the agent moving.
A dedicated tab group opens in signed-in Chromium. Every action stays visible.
Take over anytime. Boundaries explain themselves; the local record shows what happened.
Ghostlight starts with the job: see the page, act in the browser, and return a compact result. Visibility, boundaries, and evidence belong to that same experience.
MCP client <-> relay <-> local service <-> relay <-> extension <-> Chromium
No vendor service sits in the runtime path. Your browser session stays on your machine.
One installer and visible, interruptible work.
Stable schemas, compact results, and useful recovery guidance.
Local evidence, readable source, and an inspectable boundary.
Let your agent handle setup, or run the installer yourself. Both paths end at the same doctor check.
Doctor names anything missing.
Open https://sylin.org/ghostlight/demo/form/. Fill the form with the name Test Gardener, the email [email protected], the Developer role, and the message First light. Submit it, then tell me exactly what confirmation appears. Stay on sylin.org.
Nothing is sent or stored.
A spare computer becomes a named Stone. Ask the garden for MongoDB and it handles the manifest, hardware fit, storage, port and published connection details while the application stays about its own work.
Boot the garden installer on a spare machine. It receives a name, an identity and a place in the garden.
Name the service. A checked-in manifest carries the operational knowledge for selecting, placing and starting it.
Ask for MongoDB, not a remembered box. Rake returns the current location and a connection URI for people, scripts or agents.

Zen Garden starts with service intent, then carries that intent through placement, operation and discovery. The container is disposable; the offering name, configuration, data location, port and discoverability are what the garden remembers.
spare machine -> named Stone -> offer manifest -> Moss -> running service -> connection URI
Moss tends the runtime on each Stone. Rake, scripts and agents inspect the same garden; Koan applications can resolve zengarden:// resources into current connection strings.
One service-shaped request replaces a page of container, storage, port and discovery plumbing.
Compact commands plus JSON and URI output keep infrastructure work legible and composable.
Pulse, health, events, logs and visible companions make the garden observable in software and in the room.
Named offerings and checked-in manifests preserve why a service exists after its original machine is gone.
Once a Stone is running Moss, two commands turn service intent into something an application can use.
Open the live terminal view when you want the whole garden in sight:
garden-rake pulse
Pulse makes Stones, offerings and current state visible without turning ordinary service use into an operations dashboard.
When a Koan application needs GraphQL, scheduling, vector search, RAG or another advanced capability, add that intent without introducing a second framework around the domain.
The reference says what the application needs. Agyo carries the recurring registration, lifecycle and provider mechanics.
Entities, hooks, configuration and business behavior stay in Koan's familiar grammar instead of splitting into another integration layer.
Capabilities participate in Koan's startup and operational vocabulary, so optional composition can remain inspectable.
Agyo is where useful Koan-native capabilities can grow independently. Applications reference only what they need; the foundation stays lean and the resulting system stays recognizable.
Koan application + chosen Agyo capability -> AddKoan() -> one composed runtime
Agyo depends on Koan's public packages; Koan never depends on Agyo. That one-way boundary keeps every capability optional and gives it an independent release and security cadence.
Meaningful capability without integration sprawl: the remaining code stays about the application's work.
More optional intent per token: a known package and one composition grammar replace invented wiring.
Optional operational weight with visible dependencies, health, provider choices and safe defaults.
A controlled capability frontier that lets Koan remain coherent without becoming monolithic.
The capability source is implemented and testable today. Public package installation and compatibility guarantees are part of the V1 stabilization work.
Small, dependency-light Rust crates that each present one identical API over the platform-native mechanism beneath - the same operation, done the same way, on Windows, macOS and Linux. The first is os-truststore: it installs a root certificate into the OS trust store, where the established crates in this space only read from it.
A research canon, not software: an architecture paper, a glossary, a graded bibliography and a stack of decision records for how an artificial companion might remember, attend, and hold a coherent sense of self over time.
A paced-breathing companion built to be held rather than watched. A tuned, runnable prototype exists today; the shippable app does not yet.