architecture
SkillDev toolsExplains the Keychat app architecture and key components
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the architecture skill
What this skill tells your AI
The instructions your AI receives, as published by keychat-io/keychat-app in .claude/skills/architecture/SKILL.md and read by ahel’s review.
Keychat is a secure messaging app with a unique architecture. When explaining or working with the codebase, understand these key components:
Core Technologies
| Technology | Purpose | Implementation |
|---|---|---|
| Nostr Protocol | Message delivery/storage | lib/nostr-core/, WebSocket connections |
| Signal Protocol | 1:1 E2E encryption | api_signal.rs via FFI |
| MLS Protocol | Group E2E encryption | api_mls.rs via FFI |
| Bitcoin Ecash | Micropayments to relays | api_cashu.rs, keychat_ecash/ |
Package Structure
packages/
├── app/ # Main Flutter app
├── keychat_ecash/ # Ecash wallet functionality
└── keychat_rust_ffi_plugin/ # Native crypto via Rust
Key Services (packages/app/lib/service/)
- signal_chat.service.dart - Signal protocol session management
- mls_group.service.dart - MLS group key operations
- websocket.service.dart - Nostr relay connections
- chat.service.dart - High-level message routing
- relay.service.dart - Relay management
- identity.service.dart - User identity management
State Management
Uses GetX pattern:
- Controllers in
lib/controller/ - Services are singleton instances
- Reactive state with
.obsobservables
Database
Uses Isar (NoSQL for Flutter):
- Models in
lib/models/ - Models use
@collectionannotation - Generated code via build_runner (*.g.dart, *.isar.dart)
Rust FFI Bridge
Native crypto operations use flutter_rust_bridge:
- Rust code:
packages/keychat_rust_ffi_plugin/rust/src/ - Generated Dart bindings:
packages/keychat_rust_ffi_plugin/lib/ - Key APIs: Cashu, Nostr, Signal, MLS
Message Flow
- User composes message
- Signal/MLS encrypts content
- Message wrapped in Nostr event
- Ecash stamp attached (if relay requires payment)
- Sent via WebSocket to Nostr relay
- Recipient receives, decrypts, displays
Signals
- GitHub stars
- 97
- Forks
- 7
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
architecture-keychat-io- Source
- github.com/keychat-io/keychat-app