Multi-process .NET service with a Brain-centric architecture for AI-powered editing workflows.
┌─────────────────────────────────────────────────────────┐
│ Ringleader │
│ (User Autostart) │
│ Spawns & monitors all processes │
└─────────┬──────────┬──────────┬──────────┬──────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────┐ ┌────────┐ ┌─────────┐ ┌──────────────┐
│ Brain │ │ Web │ │Desktop │ │ Channel Host │
│ :4000 │ │ :3000 │ │(Avalonia│ │ (Teams) │
│ TLS/TCP │ │ SignalR │ │ app) │ │ │
│ JSON-RPC │ │ │ │ │ │ │
│ :4001 ♥ │ │ │ │ │ │ │
└──────────┘ └───┬────┘ └────┬────┘ └──────┬───────┘
▲ │ │ │
│ └───────────┴──────────────┘
│ │
└──── BrainClient ─────┘
(TLS/TCP JSON-RPC)
Brain (:4000) — Central server. Owns the Copilot SDK, MCP servers, and all AI logic.
Exposes a JSON-RPC API over TLS/TCP. Health endpoint on :4001.
Web UI (:3000) — ASP.NET Core + SignalR. Thin client that forwards everything to Brain via BrainClient.
Desktop — Avalonia app. Same thin-client pattern via BrainClient.
Channel Host — Background process for Teams channel monitoring. Connects to Brain.
Ringleader — Process manager that spawns and monitors all child processes. Runs as a user autostart process.
Shared — BrainClient, protocol types, config schema. Used by all client processes.
- .NET 9 SDK
- Windows (for Ringleader autostart; other components are cross-platform)
- Dev Tunnels CLI (optional, for remote access)
dotnet buildStart Brain and Web separately:
# Terminal 1: Brain
dotnet run --project src/EditLess.Brain
# Terminal 2: Web UI
dotnet run --project src/EditLess.WebThen open http://localhost:3000 in your browser.
# Start with Dev Tunnel (requires devtunnel CLI)
./scripts/dev.ps1 -WithTunneldotnet test./scripts/setup-tls.ps1| Project | Type | Description |
|---|---|---|
EditLess.Brain |
Console App | JSON-RPC server, Copilot SDK, health endpoint |
EditLess.Shared |
Class Library | BrainClient, protocol types, config schema |
EditLess.Web |
ASP.NET Core | SignalR hub, static chat UI |
EditLess.Desktop |
Avalonia App | Native desktop chat client |
EditLess.ChannelHost |
Console App | Teams channel monitoring |
EditLess.Ringleader |
Worker Service | Process manager (autostart) |
EditLess.Brain.Tests |
xUnit | Brain unit tests |
EditLess.Shared.Tests |
xUnit | Shared library tests |
EditLess.Ringleader.Tests |
xUnit | Ringleader/tunnel unit tests |
| Component | Technology |
|---|---|
| Runtime | .NET 9 |
| RPC | StreamJsonRpc (JSON-RPC 2.0 over TCP) |
| Web | ASP.NET Core + SignalR |
| Desktop | Avalonia 11 + Fluent Theme |
| AI | GitHub Copilot SDK (Phase 1) |
| Database | SQLite (via Microsoft.Data.Sqlite) |
| TLS | OpenSSL / .NET self-signed certs |
| CI | GitHub Actions |
Edit editless.config.json at the repo root. See src/EditLess.Shared/Config/EditLessConfig.cs for the full schema.