immygo

Pure Go. Native performance. Modern design. AI-powered.

ImmyGo wraps Gio into a modern declarative widget toolkit. Build beautiful desktop apps in Go with a declarative API, Fluent Design tokens, and pluggable AI providers (Ollama, Claude, MCP) — no web stack required.

See It in Action

The ImmyGo Showcase app — light and dark themes with 25+ built-in widgets

ImmyGo Showcase - Light Theme ImmyGo Showcase - Dark Theme

Two API Levels

Start fast with the declarative ui package — or drop down to the lower-level widget/layout packages for full Gio control.

Fluent Design

Built-in light and dark themes with semantic color tokens, typography scale, spacing, corner radii, and elevation — all customizable.

Read more

AI-Powered

Pluggable AI providers — Ollama for local models, Anthropic Claude API, or any MCP server. AI scaffolding, conversational dev mode, and runtime prototyping.

Read more

25+ Widgets

Button, TextField, Toggle, Card, DataGrid, TreeView, Dialog, Drawer, DatePicker, Navigator, and more — all with smooth animations.

Read more

Widget Gallery

Forms, lists, data grids, overlays, and more — all from a single Go codebase

Quick Install

go get github.com/amken3d/immygo

Or scaffold a project with the CLI:

# Default template
immygo new myapp

# AI-generated from a description
immygo new myapp --ai "a todo list with add and delete"

# With a specific AI provider
immygo new myapp --ai "a dashboard" --provider ollama --model qwen2.5-coder

Hello, ImmyGo

package main

import (
    "fmt"
    "github.com/amken3d/immygo/ui"
)

func main() {
    count := ui.NewState(0)

    ui.Run("My App", func() ui.View {
        return ui.Centered(
            ui.VStack(
                ui.Text("Hello, ImmyGo!").Headline(),
                ui.Button("+1").OnClick(func() {
                    count.Update(func(n int) int { return n + 1 })
                }),
                ui.Text(fmt.Sprintf("Count: %d", count.Get())).Bold(),
            ).Spacing(12),
        )
    })
}