togo install togo-framework/osTurns a togo app's web frontend into a macOS-style desktop environment: a login/lock screen, a wallpapered desktop with draggable icons, a dock, draggable / resizable / snappable windows, a Launchpad app directory, Spotlight search, a notification center, and a Settings app with live theming. Any togo plugin can register itself as a launchable OS app (icon, color, category, window spec).
The shell is fully responsive — on phones windows go full-screen and the UI drills in iOS-style.
Each OS-app plugin calls os.RegisterApp from its init(), alongside its normal
provider registration:
func init() {
os.RegisterApp(os.AppMeta{
Slug: "notes",
Name: "Notes",
Icon: "sticky-note", // lucide icon (kebab-case)
Color: "#f59e0b",
Category: "productivity",
Window: os.WindowSpec{Width: 720, Height: 520, Resizable: true},
})
}Scaffold a full app bundle (UI + backend + MCP + Claude agent + this metadata)
with togo make:os-app <name>, or start a whole project on the desktop shell
with togo new <app> --frontend os.
| Method | Path | Purpose |
|---|---|---|
GET |
/api/os/session |
Current user's DesktopPrefs (theme, wallpaper, dock pins, icon positions, …) |
PUT |
/api/os/session |
Persist DesktopPrefs |
GET |
/api/os/apps |
Registered apps (icon/color/category/window + enabled state) |
GET |
/api/os/apps/{slug} |
One app's metadata |
Desktop preferences are stored through the settings
plugin (scope os:desktop, key = user id); enabled state is joined from
plugin-host when present. The
plugin registers at PriorityLate+15 and reads the current user generically, so
it works with any auth driver.
MIT