Why Aioros
Live
Developer experience
Gallery
Cosmo
Pictor
Graphs
English
English
Español
简体中文
日本語
Get started
Aioros
Why Aioros
Live
Developer experience
Gallery
Cosmo
Pictor
Graphs
Preview · open source
Write XAML.
Serve real HTML.
Web apps that load like a website: no WebAssembly, no runtime in the browser, no JavaScript to write. And native apps on Windows, macOS and Linux from the same code, with hot reload on both.
Get started
See it live
Requests per second
1,440
Median latency
23.3 ms
Simulated traffic, computed on the server each second.
XAML saved · 28 ms
0 lines of JavaScript
Live from the server
One codebase, every screen
Web
Windows
macOS
Linux
Android · next
iOS · next
.NET 10
C#
XAML
Aioros.Cosmo
Aioros.Pictor
Aioros.Graphs
Web
Windows
macOS
Linux
Android · next
iOS · next
.NET 10
C#
XAML
Aioros.Cosmo
Aioros.Pictor
Aioros.Graphs
The problem
One product, two stacks
A team ships its website in one stack and its desktop app in another, or wraps the website in a web view and calls it native. Two codebases to keep in step, or one app that never feels at home.
The web app
Components and client state · an API layer for the client · a bundler and its configuration · hydration
The native app
Another UI toolkit, often another language · its own navigation and data loading · or a web view that ships a browser
With Aioros
One XAML page and its view model · loaded on the server, rendered as HTML on the web · the same page native on the desktop
One XAML, every target
The page you write is the page they get
A page is XAML with a view model. The server compiles it into a plan and answers HTML and CSS; the desktop runs the same XAML natively. The card beside the code is that code, rendered by the server you are reading.
Pages/report/Page.axaml
<c:Card> <c:CardHeader Title="Weekly report" Description="Sent every Monday to your team." /> <c:CardContent> <ToggleSwitch Content="Include charts" IsChecked="{Binding Charts}" /> </c:CardContent> <c:CardFooter> <Button Content="Save" Command="{Binding Save}" /> </c:CardFooter> </c:Card>
Web · live
Desktop · native
Weekly report
Sent every Monday to your team.
Include charts
Save
The same XAML, drawn natively on the desktop.
Live, from the server
Pushed while you watch
A hosted service ticks each second and invalidates a data key. Only the views that read it render again, and the server pushes them to every open page.
No WebSocket code, no client state, no JavaScript of yours.
Requests per second
1,440
Median latency
23.3 ms
Visitors online
3,442
Requests, last 60 seconds
04
14
24
34
44
54
600
900
1200
1500
1800
04
14
24
34
44
54
600
900
1200
1500
1800
Simulated traffic, computed on the server each second.
Developer experience
Save the file. See the change.
The tooling a web developer expects from a serious framework, for XAML on the web and on the desktop.
Pages/Page.axaml
<StackPanel Spacing="12">
<TextBlock Text="Hello, world" />
<TextBlock Text="Hello, Aioros" />
</StackPanel>
Edit and see
Hello, world
Hello, Aioros
Saved · 28 ms
Hot reload, both sides
A XAML edit is on screen in about 30 ms, a C# edit in about 75 ms, on the web and on the desktop, keeping scroll, focus and what you typed.
Errors at the XAML line
A failed build or a page that throws opens an overlay over the page with the file and line; fix it and the overlay goes away.
aioros dev
One command runs the app with hot reload, finds a free port and reports the build, for the web or with --desktop.
Checked at build time
Analyzers and code fixes catch what would break a page in production before it runs; a page the server cannot compile fails the build at its line.
Performance
Compiled before the first request
Pages are traced once into plans that write their HTML straight from the view models. Measured on the same machine against the same app built with each stack.
10.2×
faster than server-rendered Next.js with its cache
7.8×
faster than Blazor static server rendering
2.1×
faster than the same app in Go
4.3×
faster than the same app in Rust with Leptos
Requests per second, by page
Lumen, an issue tracker built five times; 64 connections, 4 server cores; benchmark run 241, October 2026. Geometric mean over five pages.
/issues/LUM-105
/settings
/inbox
/issues
/projects
85,620
57,961
53,943
31,917
16,378
/issues/LUM-105
/settings
/inbox
/issues
/projects
85,620
57,961
53,943
31,917
16,378
/issues/LUM-105
/settings
/inbox
/issues
/projects
85,620
57,961
53,943
31,917
16,378
Everything included
What a serious framework brings
Rendering, data, motion, languages and accessibility, built in and the same on every target.
28 ms
Hot reload everywhere
Save a XAML or C# file and every open page and window updates, keeping its state.
Live by default
Invalidate a data key; the views that read it update on every screen.
Themes that follow you
Light and dark from the device, per visitor, with no flash.
Hello
Hola
你好
こんにちは
Every language
Resources per culture, an address per language, precompiled.
Tab ↹
Accessible markup
Native elements, landmarks, labels and focus, written from your XAML.
A real desktop app
Not a web view: native windows, native rendering, the same pages.
Aioros.Cosmo · shadcn/ui in XAML
Every shadcn/ui component, as XAML
All 67 components with their variants, design tokens and twelve color themes in light and dark. On the web each one is real HTML (a button is a <button>, a link an <a>); on the desktop, native controls.
67/67
shadcn/ui components ported
99.5–100%
of pixels equal to shadcn/ui's own render
12
color themes, light and dark
Create an account
Enter your email below to create your account.
Email
Password
I agree to the terms
Create account
Deployed to production
Every page was compiled into a plan before the server started.
Notifications
Email digests
Push notifications
Only mentions
Account
Password
Make changes to your account here. Click save when you are done.
Save changes
Change your password here. After saving, you will be logged out.
Save changes
Team members
Owner
SD
Sofia Davis
m@example.com
Member
JL
Jackson Lee
p@example.com
Viewer
IN
Isabella Nguyen
i@example.com
Upload progress
Buttons and badges
Button
Secondary
Outline
Ghost
Badge
Secondary
Outline
Destructive
Explore Cosmo
Aioros.Pictor · Recharts in XAML
Recharts' charts, with no JavaScript of yours
Recharts 2.15.4's whole API in XAML: written by the server as SVG, interactive through CSS and the framework's script, live when the server pushes new data, and drawn natively on the desktop.
12
chart types, every Recharts export
96×
faster than Recharts' server render
2.15.4
Recharts version whose API it follows
Page B
Page D
Page E
Page G
Page A
Uv : 4000
Pv : 2400
Page B
Uv : 3000
Pv : 1398
Page C
Uv : 2000
Pv : 9800
Page D
Uv : 2780
Pv : 3908
Page E
Uv : 1890
Pv : 4800
Page F
Uv : 2390
Pv : 3800
Page G
Uv : 3490
Pv : 4300
Page B
Page C
Page D
Page E
Page G
Page A
Uv : 4000
Pv : 2400
Page B
Uv : 3000
Pv : 1398
Page C
Uv : 2000
Pv : 9800
Page D
Uv : 2780
Pv : 3908
Page E
Uv : 1890
Pv : 4800
Page F
Uv : 2390
Pv : 3800
Page G
Uv : 3490
Pv : 4300
Area
Page B
Page D
Page E
Page F
Page A
Amt : 1400
Pv : 800
Uv : 590
Page B
Amt : 1506
Pv : 967
Uv : 868
Page C
Amt : 989
Pv : 1098
Uv : 1397
Page D
Amt : 1228
Pv : 1200
Uv : 1480
Page E
Amt : 1100
Pv : 1108
Uv : 1520
Page F
Amt : 1700
Pv : 680
Uv : 1400
Page B
Page C
Page D
Page E
Page F
Page A
Amt : 1400
Pv : 800
Uv : 590
Page B
Amt : 1506
Pv : 967
Uv : 868
Page C
Amt : 989
Pv : 1098
Uv : 1397
Page D
Amt : 1228
Pv : 1200
Uv : 1480
Page E
Amt : 1100
Pv : 1108
Uv : 1520
Page F
Amt : 1700
Pv : 680
Uv : 1400
Composed
Math
Chinese
English
Geography
Physics
History
Radar
Explore Pictor
Aioros.Graphs · d3 in C#
d3's drawing engine, byte for byte
Scales, shapes, curves, hierarchies, chords, sankeys and forces ported from d3 and tested against d3's own output: the same SVG path data, byte for byte, written by C# structs and spans with no allocation per point.
19/19
charts byte-identical to d3
2.7×
faster than d3 over those charts
3.8×
faster across 52 micro-benchmarks
Force-directed network
Partition sunburst
Chord diagram
Circle packing
Tidy tree
Streamgraph
Explore Graphs
Gallery
What you can build
Dashboards, charts, forms and drawings, each one server-rendered here and native on the desktop.
Revenue
$15,231
+20.1%
Users
2,350
+180
Active
573
+201
A dashboard with Cosmo
Charts with Pictor
Remember me
Sign in
Forms with Cosmo
Drawings with Graphs
Open the gallery
Comparison
One stack instead of two
What a product team writes and keeps in step, side by side.
Web stack + desktop stack
Web view app
Aioros
Codebases to keep in step
2
1
1
JavaScript to write
A lot
A lot
None
Native rendering on the desktop
Server-rendered, indexable pages
Live updates without client code
Hot reload on web and desktop
Platforms and roadmap
Today and next
The same pages on every target Aioros supports, and the ones it is growing into.
Web
Available
Windows
Available
macOS
Available
Linux
Available
Android
Next
iOS
Next
Preview: web, Windows, macOS and Linux
Design time for people and agents
Android and iOS
Version 1.0
FAQ
Questions, answered
Do I write any JavaScript?
No. Pages are XAML and C#. The framework ships a small script for navigation, live updates and motion, and every page works without it.
How does a XAML page become HTML?
Each page is traced once into a plan that writes its HTML and CSS straight from the view models, so a request does almost no work.
Can I bring my existing XAML?
Yes. Aioros speaks the XAML of Avalonia, with its controls, styles, bindings and view models.
Is it ready for production?
It is a preview: the framework and its libraries are tested and measured, and their APIs may still change before 1.0.
What does it run on?
.NET 10 on the server and the desktop: any browser on the web, and native windows on Windows, macOS and Linux.
Get started
Build your next app in XAML
A template with a real dashboard, a dev server with hot reload, and one codebase for the web and the desktop.
Get started
Open the gallery
bash
$
dotnet new install Aioros.Cosmo.Templates
$
dotnet new cosmo -n MyApp
$
cd MyApp && aioros dev
✓ Ready on http://localhost:3000 · hot reload on
1
Install the templates
dotnet new install Aioros.Cosmo.Templates
2
Create an app
dotnet new cosmo -n MyApp
3
Run it with hot reload
cd MyApp && aioros dev
Add --desktop to open the same app as a native window.