One Net Client is a cross-platform unified desktop client that consolidates database operations, SSH/SFTP file transfer, RDP/VNC remote desktop, local terminal and an embedded AI Assistant in a single application.
516
stars
2,273
commits
Rust
primary language
Sep 10, 2026
updated
GPUI Kit
Build fantastic, high-performance desktop apps with Rust and GPUI.
GPUI Kit is a comprehensive Rust desktop application framework. It combines a production-ready UI system with application-grade data, layout, and editing capabilities, all built on a reusable foundation of behavior, state, and infrastructure, and opens the finished application to JavaScript extensions.
Documentation: https://gpui-kit.com
gpui-kit The one crate applications depend on
├── gpui-base Unstyled behavior, state, and infrastructure
└── gpui-component GPUI Component: the complete styled UI system
gpui-kit pins the matching GPUI release and re-exports GPUI, base, component,
and assets, so a Rust application lists a single dependency. JavaScript extension
hosts add gpui-shell separately; gpui-component-shell supplies the styled catalog.
See the executable application recipe and AI-assisted development acceptance checks for a tested starting point and verification commands.
gpui-base.gpui-shell lets a shipped Rust host load panels and business logic as scripts, with every capability granted explicitly.Use gpui-component to keep the application coherent with one complete visual
and interaction system. Use gpui-base when your product needs to create and
own that system itself. Use gpui-shell when the application should be
extensible in JavaScript after it ships.
gpui-component | gpui-base | gpui-shell |
|---|---|---|
| Complete, styled components | Unstyled behavior and infrastructure | JavaScript runtime hosted by Rust |
| Productive defaults with theming | Full control over structure and visual design | Capabilities granted one at a time |
| Best for building applications | Best for building design systems | Best for plugins and scripted applications |
APPLICATION
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ gpui-component │ │ Your Design │ │ gpui-shell │
│ Styled UI │ │ System │ │ JS extensions │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ │
└────────────────────┼────────────────────┘
▼
┌──────────────────┐
│ gpui-base │
│ Behavior · State │
│ Infrastructure │
└────────┬─────────┘
▼
GPUI
Behavior belongs to the foundation. Presentation belongs to the application.
Use gpui-component when you want polished controls ready to ship. Build on
gpui-base when your application should own its component source, layout,
styling, and motion while reusing difficult interaction behavior. Add
gpui-shell when contributors should extend the product without a fork or
a release.
The layering follows the same separation that makes the shadcn ecosystem flexible:
| GPUI Kit ecosystem | Web ecosystem |
|---|---|
| GPUI | HTML + Tailwind CSS |
gpui-base | Base UI |
gpui-component | shadcn's styled component layer |
GPUI Kit has powered Longbridge Pro from day one. The framework is extracted from the demands of a publicly shipped commercial desktop application rather than designed in isolation.
GPUI provides the rendering foundation. Longbridge provides the production foundation.
[dependencies]
gpui-kit = "0.6"
gpui-kit always brings in GPUI and gpui-base; gpui-component and the
default icon set are on by default. Turn default
features off to keep only the layers you use. The gpui-component features (inspector, decimal,
tree-sitter, and each tree-sitter-<language>) are available under the same
names.
use gpui_kit::component::button::*;
use gpui_kit::component::*;
use gpui_kit::*;
pub struct HelloWorld;
impl Render for HelloWorld {
fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
div()
.v_flex()
.gap_2()
.size_full()
.items_center()
.justify_center()
.child("Hello, World!")
.child(
Button::new("ok")
.primary()
.label("Let's Go!")
.on_click(|_, _, _| println!("Clicked!")),
)
}
}
fn main() {
gpui_kit::application().run(move |cx| {
// This must be called before using any GPUI Component features.
gpui_kit::init(cx);
cx.spawn(async move |cx| {
cx.open_window(WindowOptions::default(), |window, cx| {
let view = cx.new(|_| HelloWorld);
// This first level on the window, should be a Root.
cx.new(|cx| Root::new(view, window, cx))
})
.expect("Failed to open window");
})
.detach();
});
}
The default assets feature bundles the Lucide icon set
as gpui-kit-assets; pass it to the application with
gpui_kit::application().with_assets(gpui_kit::assets::Assets). To ship your
own icons instead, leave that feature out and name the SVG files as defined in
IconName.
Install the GPUI Kit skills for your AI coding agent (Cursor, Claude Code, Gemini CLI, Codex, etc.):
npx skills add longbridge/gpui-kit
| Skill | Description |
|---|---|
gpui-kit | Setup, component catalog, usage patterns, GPUI mechanics (elements, entities, async, focus, actions, tests), and the Coding Guides. |
gpui-kit-design-guides | The Design Guides: layout, spacing, hierarchy, interaction states, overlays, and interface copy. |
The story crate is a gallery application that showcases all available components. Run it with:
cargo run
Some larger examples reuse the story gallery components and run as standalone packages:
# Dock layout system (panels, split views, tabs)
cargo run -p example-dock
# Markdown rendering
cargo run -p example-markdown
# HTML rendering
cargo run -p example-html
The examples directory also contains standalone examples, each focused on a single feature. Each example is a separate crate, run them with cargo run -p <name>:
# Code editor with LSP support and syntax highlighting
cargo run -p example-editor
# Basic hello world
cargo run -p hello_world
# System monitor (real-time charts with CPU/memory data)
cargo run -p system_monitor
# Window title customization
cargo run -p window_title
Check out CONTRIBUTING.md for more details.
See the comparison with Iced, egui and Qt 6 on the site.
Apache-2.0
(top 30 of 142)
Rust
96.2%
TypeScript
1.3%
One Net Client is a cross-platform unified desktop client that consolidates database operations, SSH/SFTP file transfer, RDP/VNC remote desktop, local terminal and an embedded AI Assistant in a single application.
516
stars
2,273
commits
Rust
primary language
Sep 10, 2026
updated
GPUI Kit
Build fantastic, high-performance desktop apps with Rust and GPUI.
GPUI Kit is a comprehensive Rust desktop application framework. It combines a production-ready UI system with application-grade data, layout, and editing capabilities, all built on a reusable foundation of behavior, state, and infrastructure, and opens the finished application to JavaScript extensions.
Documentation: https://gpui-kit.com
gpui-kit The one crate applications depend on
├── gpui-base Unstyled behavior, state, and infrastructure
└── gpui-component GPUI Component: the complete styled UI system
gpui-kit pins the matching GPUI release and re-exports GPUI, base, component,
and assets, so a Rust application lists a single dependency. JavaScript extension
hosts add gpui-shell separately; gpui-component-shell supplies the styled catalog.
See the executable application recipe and AI-assisted development acceptance checks for a tested starting point and verification commands.
gpui-base.gpui-shell lets a shipped Rust host load panels and business logic as scripts, with every capability granted explicitly.Use gpui-component to keep the application coherent with one complete visual
and interaction system. Use gpui-base when your product needs to create and
own that system itself. Use gpui-shell when the application should be
extensible in JavaScript after it ships.
gpui-component | gpui-base | gpui-shell |
|---|---|---|
| Complete, styled components | Unstyled behavior and infrastructure | JavaScript runtime hosted by Rust |
| Productive defaults with theming | Full control over structure and visual design | Capabilities granted one at a time |
| Best for building applications | Best for building design systems | Best for plugins and scripted applications |
APPLICATION
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ gpui-component │ │ Your Design │ │ gpui-shell │
│ Styled UI │ │ System │ │ JS extensions │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ │
└────────────────────┼────────────────────┘
▼
┌──────────────────┐
│ gpui-base │
│ Behavior · State │
│ Infrastructure │
└────────┬─────────┘
▼
GPUI
Behavior belongs to the foundation. Presentation belongs to the application.
Use gpui-component when you want polished controls ready to ship. Build on
gpui-base when your application should own its component source, layout,
styling, and motion while reusing difficult interaction behavior. Add
gpui-shell when contributors should extend the product without a fork or
a release.
The layering follows the same separation that makes the shadcn ecosystem flexible:
| GPUI Kit ecosystem | Web ecosystem |
|---|---|
| GPUI | HTML + Tailwind CSS |
gpui-base | Base UI |
gpui-component | shadcn's styled component layer |
GPUI Kit has powered Longbridge Pro from day one. The framework is extracted from the demands of a publicly shipped commercial desktop application rather than designed in isolation.
GPUI provides the rendering foundation. Longbridge provides the production foundation.
[dependencies]
gpui-kit = "0.6"
gpui-kit always brings in GPUI and gpui-base; gpui-component and the
default icon set are on by default. Turn default
features off to keep only the layers you use. The gpui-component features (inspector, decimal,
tree-sitter, and each tree-sitter-<language>) are available under the same
names.
use gpui_kit::component::button::*;
use gpui_kit::component::*;
use gpui_kit::*;
pub struct HelloWorld;
impl Render for HelloWorld {
fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
div()
.v_flex()
.gap_2()
.size_full()
.items_center()
.justify_center()
.child("Hello, World!")
.child(
Button::new("ok")
.primary()
.label("Let's Go!")
.on_click(|_, _, _| println!("Clicked!")),
)
}
}
fn main() {
gpui_kit::application().run(move |cx| {
// This must be called before using any GPUI Component features.
gpui_kit::init(cx);
cx.spawn(async move |cx| {
cx.open_window(WindowOptions::default(), |window, cx| {
let view = cx.new(|_| HelloWorld);
// This first level on the window, should be a Root.
cx.new(|cx| Root::new(view, window, cx))
})
.expect("Failed to open window");
})
.detach();
});
}
The default assets feature bundles the Lucide icon set
as gpui-kit-assets; pass it to the application with
gpui_kit::application().with_assets(gpui_kit::assets::Assets). To ship your
own icons instead, leave that feature out and name the SVG files as defined in
IconName.
Install the GPUI Kit skills for your AI coding agent (Cursor, Claude Code, Gemini CLI, Codex, etc.):
npx skills add longbridge/gpui-kit
| Skill | Description |
|---|---|
gpui-kit | Setup, component catalog, usage patterns, GPUI mechanics (elements, entities, async, focus, actions, tests), and the Coding Guides. |
gpui-kit-design-guides | The Design Guides: layout, spacing, hierarchy, interaction states, overlays, and interface copy. |
The story crate is a gallery application that showcases all available components. Run it with:
cargo run
Some larger examples reuse the story gallery components and run as standalone packages:
# Dock layout system (panels, split views, tabs)
cargo run -p example-dock
# Markdown rendering
cargo run -p example-markdown
# HTML rendering
cargo run -p example-html
The examples directory also contains standalone examples, each focused on a single feature. Each example is a separate crate, run them with cargo run -p <name>:
# Code editor with LSP support and syntax highlighting
cargo run -p example-editor
# Basic hello world
cargo run -p hello_world
# System monitor (real-time charts with CPU/memory data)
cargo run -p system_monitor
# Window title customization
cargo run -p window_title
Check out CONTRIBUTING.md for more details.
See the comparison with Iced, egui and Qt 6 on the site.
Apache-2.0
(top 30 of 142)
Rust
96.2%
TypeScript
1.3%