Alat is a set of services and applications aimed at providing a seamless interface common to all devices to connect them together. Its work is greatly inspired by KDE Connect, though they don't have any direct relationship.
For it to work, Alat exposes features to paired devices through services, which you can configure and control.
⚠️ Early Development Notice: Alat has barely started its development, and very breaking changes are expected.
Alat operates on a peer-to-peer (P2P) model where each device acts as both a client and server, enabling seamless bidirectional communication and service sharing.
┌─────────────────┐ gRPC/Protocol Buffers ┌─────────────────┐
│ Desktop App │◄──────────────────────────►│ Mobile App │
│ │ │ │
│ ┌─────────────┐ │ │ ┌─────────────┐ │
│ │P2P Server │ │ Discovery │ │P2P Server │ │
│ │- sysinfo │ │◄────────(mDNS/Local)───────►│ │- sysinfo │ │
│ │- rcfile │ │ │ │- rcfile │ │
│ │- media │ │ │ │- media │ │
│ └─────────────┘ │ │ └─────────────┘ │
│ ┌─────────────┐ │ │ ┌─────────────┐ │
│ │P2P Client │ │ Service Calls │ │P2P Client │ │
│ │- discovery │ │◄──────────────────────────►│ │- discovery │ │
│ │- pairing │ │ │ │- pairing │ │
│ └─────────────┘ │ │ └─────────────┘ │
└─────────────────┘ └─────────────────┘
▲ ▲
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Headless Server │ │ Other Devices │
│ │ │ (TV, IoT...) │
└─────────────────┘ └─────────────────┘
Each Alat node exposes services that other paired devices can consume:
alat/
├── proto/ # gRPC and Protocol Buffer definitions
├── pkg/ # Shared Go packages
│ ├── core/ # Core P2P runtime, services, client/server
│ └── mobile_bridge/ # Go-Dart FFI bridge for mobile
├── apps/
│ ├── desktop/ # Wails + SvelteKit desktop app
│ ├── mobile/ # Flutter mobile app
│ └── server/ # Headless server (planned)
├── logo/
│ ├── animated/ # Animated SVG logos
│ └── static/ # Static SVG and PNG logos
├── go.work # Go workspace configuration
└── manage.fish # Development automation scripts
The app should be pretty easy to build. Make sure you have the Go programming language installed, then use it to install the Wails CLI (check https://wails.io), then just build as a normal Wails application or using the manage.fish
scripts.
# Build and run desktop app
./manage.fish desktop build
./manage.fish desktop dev
# Build mobile app (development)
./manage.fish mobile dev
# Generate protocol buffer code
./manage.fish proto
Notice: The dev commands are targeted for devices running Ubuntu 25.04 on amd64.
The root manage.fish
script orchestrates common development tasks:
./manage.fish proto
- Compile protobuf files to Go and Dart./manage.fish desktop <command>
- Desktop app operations./manage.fish mobile <command>
- Mobile app operations ./manage.fish server <command>
- Headless server operationsAlat is structured as a Go workspace with a core package and multiple applications. A more detailed explanation of how the project works internally can be found in ./GEMINI.md.
Thanks for your interest in Alat! 🚀