Yanami

Project Url: icylian/Yanami
Introduction: A Material Design 3 Android client for the Komari server monitoring tool.
More: Author   ReportBugs   
Tags:

English | 简体中文

Badge Ask DeepWiki

banner

Yanami is an Android client for the Komari server monitoring tool, built with the Material Design 3 design language.

A Material Design 3 Android client for the Komari server monitoring tool.


Features

  • Multi-Instance Management — Add, edit, and switch between multiple Komari server instances.
  • Three Authentication Modes — Support password, API Key, and guest mode authentication.
  • Real-Time Node List — WebSocket real-time push for node status (CPU / RAM / Disk / Network IO).
  • Node Detail Dashboard — Load history line charts, Ping latency trends, basic server information.
  • SSH Terminal — Full-featured ANSI/VT100 terminal based on termux terminal-view + WebSocket, supporting special key toolbars and font size adjustment.
  • Home Screen Widget — Glance widget for node overview, refresh, and update interval configuration.
  • Tablet Landscape Layout — Adaptive large-screen layout with NavigationRail, multi-column lists, and split detail panels.
  • Multi-Language Support — Chinese (Default), English, Japanese.
  • Theme System — Material You dynamic colors (Android 12+) + 6 preset color palettes, supporting dark/light mode and system-following mode.

Screenshots

Expand

Instance Management

addserver serverlist

Day/Light Mode (Phone)

nodelist nodedetail1

Day/Light Mode (Tablet)

nodelisttablet

nodedetail1tablet

Night/Dark Mode

nodelistdark nodedetaildark

Latency Monitoring/SSH Terminal

nodedetail2 nodeterminal

Snippets

snippetslist addsnippet

Widget

widget widgetdark

System Requirements

Item Requirement
Android 9.0 (API 28) and above
Server Komari 1.1.7 or above

Build

# Debug APK
./gradlew assembleDebug

# Release APK
./gradlew assembleRelease

# Clean and Build
./gradlew clean assembleDebug

Build outputs are located at app/build/outputs/apk/.

Tech Stack

Library Version Purpose
Kotlin 2.3.10 Main language
Jetpack Compose BOM 2026.02.01 UI Framework
MD3 Design System
Voyager 1.1.0-beta03 Navigation + ScreenModel
Koin 4.1.1 Dependency Injection
Ktor 3.4.1 HTTP Client + WebSocket
Room 2.8.4 Local Database (Encrypted credential storage)
Vico 3.0.3 Charts (Compose M3)
termux terminal-view 0.119.0-beta.3 Terminal ANSI/VT100 Rendering
DataStore Preferences 1.2.0 User Preferences Persistence

Architecture

Adopts the MVI (Model-View-Intent) pattern with an adaptive root shell:

UI Layer      MainActivity Root Shell + Voyager Screen + Compose UI + MviViewModel<State, Event, Effect>
Domain Layer  Repository Interface + Domain Model (Node, ServerInstance …)
Data Layer    Repository Implementation, Ktor, Room, DataStore

Each page follows the Contract Pattern, describing the complete MVI contract of the page with nested State / Event / Effect.

Navigation Flow

ServerListScreen → AddServerScreen
                 → NodeListScreen → NodeDetailScreen → SshTerminalScreen
                 → SettingsHubScreen → SettingsScreen / AboutScreen

Authentication & Network

  • PASSWORD — Obtain session_token via POST /api/login (supports 2FA).
  • API_KEY — Use Authorization: Bearer <api-key> directly, without login flow.
  • GUEST — No authentication header; monitor APIs and WebSocket data remain available, but SSH terminal is disabled.
  • Credentials and session data are encrypted with AES/GCM and stored in Room, automatically restored on startup.
  • WebSocket (wss://host/api/rpc2) always requires the Origin header.
  • SessionCookieInterceptor / network layer automatically inject Cookie, Bearer token, or skip auth headers according to authType.

Adaptive Layout

  • Phone / narrow width: standard Voyager stack navigation.
  • Tablet landscape: root-level NavigationRail + content pane.
  • Node and server lists switch to multi-column card layouts on wide landscape screens.
  • Node detail charts and info cards use split wide-screen layouts.
  • Form and settings pages use centered constrained-width content on large screens.

License

This project is licensed under the MIT License.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools