[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-105399":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},105399,"kyllene","Giton22\u002Fkyllene","Giton22","Unofficial Android client for Hermes Agent.","",null,"Kotlin",214,41,3,19,0,5,15,53.77,"MIT License",false,"master",true,[],"2026-11-01 00:15:50","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"docs\u002Flogo.svg\" alt=\"\" width=\"96\" height=\"96\">\n\n# Kyllene\n\n**A native Android client for [Hermes Agent](https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent).**\nChat with your own agent, approve what it wants to do, and follow its work from your phone.\n\n[![Website](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwebsite-kyllene.app-1F5CF2?style=flat)](https:\u002F\u002Fkyllene.app)\n[![Latest release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FGiton22\u002Fkyllene?style=flat&label=release)](https:\u002F\u002Fgithub.com\u002FGiton22\u002Fkyllene\u002Freleases\u002Flatest)\n[![Android 8.0+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAndroid-8.0%2B-3DDC84?style=flat&logo=android&logoColor=white)](#install)\n[![Kotlin Multiplatform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FKotlin-Multiplatform-7F52FF?style=flat&logo=kotlin&logoColor=white)](#development)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue?style=flat)](LICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FGiton22\u002Fkyllene?style=flat&logo=github)](https:\u002F\u002Fgithub.com\u002FGiton22\u002Fkyllene\u002Fstargazers)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-join%20the%20community-5865F2?style=flat&logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FwCtyvQ3KcM)\n\n\u003Cimg src=\"docs\u002Fscreenshots\u002Freply.jpg\" width=\"250\" alt=\"A finished reply with reasoning, tools and a code block\">&nbsp;\n\u003Cimg src=\"docs\u002Fscreenshots\u002Fsidebar.jpg\" width=\"250\" alt=\"The sessions sidebar with projects, filters and chat states\">&nbsp;\n\u003Cimg src=\"docs\u002Fscreenshots\u002Fapproval.jpg\" width=\"250\" alt=\"The agent asking for approval to run a command\">\n\n\u003C\u002Fdiv>\n\nKyllene connects to the `hermes dashboard` you already run on a server, homelab, VPS or Tailnet, the\nsame way Hermes Desktop's \"Remote gateway\" connection does. There is no Kyllene server and no account:\nthe app talks to your gateway directly.\n\n> [!NOTE]\n> Kyllene is an independent project. It isn't made or endorsed by Nous Research.\n\n> [!TIP]\n> Kyllene was called **Herald** until this release. It's the same app: an update installs over Herald\n> and keeps your sign-in, chats and settings.\n\n## Contents\n\n- [Features](#features)\n- [Screenshots](#screenshots)\n- [Install](#install)\n- [Requirements](#requirements)\n- [Privacy](#privacy)\n- [Community](#community)\n- [Support Herald](#support-herald)\n- [Development](#development)\n- [Releasing](#releasing)\n- [License](#license)\n\n## Features\n\n**Chat**\n- Streaming replies with Markdown, syntax-highlighted code, TeX math, reasoning and tool activity\n- One live status line for the task at work, with its plan and the running tool\n- Send while the agent works: steer the running reply, queue the next prompt, or stop and send\n- Select any part of a reply to comment on, explain or ask about on the side\n- Copy, edit, regenerate or branch from any message; every chat keeps its unsent draft\n- A prompt that may not have arrived can be checked, resent or edited; nothing resends by itself\n- Model, thinking level, fast mode and profile per chat, with starred and recent models\n- Photos, camera, files and PDFs; pictures and files the agent sends back\n- Dictation (on the device or through the gateway), hands-free voice chat and live voice calls\n\n**Control**\n- Approvals, questions, sudo, secret and password-manager prompts, also from a notification\n- Subagents, background processes and checkpoints: watch, stop and restore\n- A chat's cost, token use and what fills its context window\n\n**Organize**\n- Sessions sidebar with search, pins, projects, archive, export and Running \u002F Needs you filters\n- Bots and rooms: chat with each bot, follow their exchanges, and @mention them in a room\n- Scheduled jobs: create, edit, pause and run them, and open each run as a chat\n- Capabilities: turn skills, toolsets and MCP servers on or off, and test a server\n- Config: change Hermes's own settings, or each bot's, by section or by search, or edit config.yaml\n- Insights: cost, sessions and tokens by day, and the models, tools and skills used most\n\n**Stay connected**\n- Notifications when a turn finishes or needs you, with inline approve, answer and reply\n- Optional end-to-end encrypted push from outside your network, without Google services\n- Several saved gateways, each kept signed in\n- An encrypted offline copy of recent chats, readable while the gateway can't be reached\n- App lock with fingerprint, face or screen lock\n\nThe full feature list, and what's planned, is in the [roadmap](docs\u002FROADMAP.md).\n\n## Screenshots\n\n| A reply | At work | Subagents |\n|:---:|:---:|:---:|\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Freply.jpg\" width=\"240\" alt=\"A finished reply with reasoning, tools and a code block\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fworking.jpg\" width=\"240\" alt=\"A running turn with its status above the composer\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fsubagents.jpg\" width=\"240\" alt=\"Three subagents working side by side\"> |\n| **Delivery check** | **Bots** | **A room** |\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Fundelivered.jpg\" width=\"240\" alt=\"Prompts without a reply, offering Check, Resend and Edit\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fbots.jpg\" width=\"240\" alt=\"The bot roster with a needs-you inbox and rooms\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Froom.jpg\" width=\"240\" alt=\"Three bots talking in a room\"> |\n| **Voice chat** | **Model picker** | **Usage and context** |\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Fvoice.jpg\" width=\"240\" alt=\"A hands-free voice chat, listening\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fmodels.jpg\" width=\"240\" alt=\"Starred and recent models, with thinking level and fast mode\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fusage.jpg\" width=\"240\" alt=\"A chat's cost and what fills its context window\"> |\n| **Background processes** | **Checkpoints** | **Insights** |\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Fprocesses.jpg\" width=\"240\" alt=\"Processes the agent started, with their output and Stop\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fcheckpoints.jpg\" width=\"240\" alt=\"Checkpoints, one opened on its changes\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Finsights.jpg\" width=\"240\" alt=\"Cost, sessions and tokens by day over 30 days\"> |\n| **A scheduled job** | **Capabilities** | **Connect** |\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Fscheduled-job.jpg\" width=\"240\" alt=\"A scheduled job with Run now, Pause and its runs\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fcapabilities.jpg\" width=\"240\" alt=\"The profile's skills, each with a switch\"> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fconnect.jpg\" width=\"240\" alt=\"Connecting to a gateway that answered\"> |\n\n\u003Csub>All screenshots show sample data, not a real gateway.\u003C\u002Fsub>\n\n## Install\n\n1. On your Android phone (Android 8.0 or newer), download the APK from the\n   [latest release](https:\u002F\u002Fgithub.com\u002FGiton22\u002Fkyllene\u002Freleases\u002Flatest). For almost every phone that is\n   the `arm64-v8a` build; the release notes say which fits other devices.\n2. Open it, and allow installing from your browser when Android asks.\n3. Kyllene tells you when a new release is out. Install it over the old one; your sign-in and settings stay.\n\n## Requirements\n\n| | |\n|---|---|\n| **Hermes Agent** | The dashboard running (`hermes dashboard`) and reachable from your phone. Kyllene is built against Hermes Agent's main branch as of October 2026; older versions may lack some features. |\n| **Network** | The same Wi-Fi, [Tailscale](https:\u002F\u002Ftailscale.com), or an `https:\u002F\u002F` address. Kyllene warns before it would send a password over the internet unencrypted. Gateways behind Cloudflare Access are supported with a service token. |\n| **Sign-in** | A dashboard username and password, or browser sign-in on SSO\u002FOIDC gateways. |\n\nIf something doesn't connect, **Settings → Check connection** tests the server, the sign-in and the live\nconnection one at a time and says what to fix.\n\n## Privacy\n\n- Kyllene talks only to your gateway, with these exceptions, each under your control:\n  - it asks GitHub whether a newer release exists (can be turned off in Settings);\n  - it loads pictures embedded in replies when you tap them;\n  - webpage previews automatically fetch up to three linked pages per completed reply and their\n    thumbnails, without gateway cookies and never from addresses on your own networks, only if you\n    allow it;\n  - if you install the push plugin, notifications from outside your network go through ntfy,\n    end-to-end encrypted and signed.\n- Your sign-in and the offline copy of your chats are encrypted with a key held in the Android\n  Keystore. App data is excluded from backups.\n- No analytics, no tracking.\n- Phone tools are off until you switch each one on in Settings → Phone tools. What a tool reads (your\n  location, calendar, contacts, or steps, sleep and heart rate from Health Connect) goes only to your\n  gateway's agent, in the chat that asked, when the agent calls it. Kyllene only reads health data, never\n  writes it, and keeps none of it.\n\n## Community\n\nJoin the [Discord](https:\u002F\u002Fdiscord.gg\u002FwCtyvQ3KcM) to get help, share your setup, suggest features\nand hear about new releases first. In the app, it's under **Settings → About → Join the Discord**.\n\nFound a bug? [Open an issue](https:\u002F\u002Fgithub.com\u002FGiton22\u002Fkyllene\u002Fissues\u002Fnew\u002Fchoose) here or post it in\nthe server's #bug-reports.\n\n## Support Herald\n\nHerald is free and open source. If it's useful to you, you can support its development through\n[GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002FGiton22) or [Ko-fi](https:\u002F\u002Fko-fi.com\u002Fgiton).\n\n## Development\n\nWant to contribute? Read [CONTRIBUTING.md](CONTRIBUTING.md) first.\n\n**Requirements:** JetBrains Runtime 25 (Android Studio's bundled JBR is one; Gradle downloads it when none is found) and the Android SDK with API 37. For inline widgets and plugin pages in the desktop app, use the JBR build with JCEF.\n\nBuild, test and install a debug build:\n\n```bash\n.\u002Fgradlew :androidApp:assembleDebug\n```\n\n```bash\n.\u002Fgradlew :shared:core:testAndroidHostTest :shared:ui:testAndroidHostTest\n```\n\n```bash\n.\u002Fgradlew :androidApp:installDebug\n```\n\nRun the experimental desktop app, or package it (an MSI on Windows, a DMG on macOS, a DEB on Linux):\n\n```bash\n.\u002Fgradlew :desktopApp:run\n```\n\n```bash\n.\u002Fgradlew :desktopApp:packageReleaseDistributionForCurrentOS\n```\n\nThe release package goes through ProGuard, which takes a few minutes; `packageDistributionForCurrentOS` skips it.\n\n### Project layout\n\n```\nshared\u002Fcore          protocol, auth, network, repositories (no UI)\nshared\u002Fdesignsystem  design tokens and components on Compose Unstyled\nshared\u002Fui            screens and view models (commonMain)\nandroidApp           Android host: Application, Activity, notifications, manifest\ndesktopApp           desktop host (experimental): the window, Escape as back\n```\n\nThe gateway protocol notes are in [docs\u002Fhermes-protocol-research.md](docs\u002Fhermes-protocol-research.md).\n\n### Previews and screenshots\n\nEvery main screen has a Compose `@Preview` drawn from sample data\n([`HeraldPreviews.kt`](shared\u002Fui\u002Fsrc\u002FcommonMain\u002Fkotlin\u002Fdev\u002Fhermeskotlin\u002Fui\u002Fpreview\u002FHeraldPreviews.kt)), so it\nshows in Android Studio without a gateway. Debug builds also include `PreviewGalleryActivity`, which shows\none scene full-screen. The README screenshots are taken from it on an emulator, then scaled to 840 px\nwide and saved as JPEG:\n\n```bash\nadb shell am start -S -n dev.herald.android\u002Fdev.hermeskotlin.android.PreviewGalleryActivity --es scene Reply --ez dark true\n```\n\n```bash\nadb exec-out screencap -p > reply.png\n```\n\nThe scene names are the `PreviewScene` values in `HeraldPreviews.kt`, such as `Reply`, `Working`,\n`Approval`, `Subagents`, `Sidebar`, `Bots`, `Room`, `Models`, `Insights` and `Settings`.\n\n> [!TIP]\n> On Windows, if host tests fail with `Could not find or load main class Files\\...`, your `PATH`\n> contains a stray `\"` character. Remove it from the environment variable.\n\n## Releasing\n\nPushing a tag such as `v0.3.0` runs the tests, builds APKs signed with the release key and attaches\nthem, each with its SHA-256, to a draft release: a universal APK and one per ABI, about a third of its\nsize. Publishing the draft makes it the update the app offers. The version comes from the tag\n(`1.2.3` → version code `10203`), so tags must only go up.\n\nThe workflow needs these repository secrets: `ANDROID_KEYSTORE_BASE64` (the keystore, base64-encoded),\n`ANDROID_KEYSTORE_PASSWORD`, `ANDROID_KEY_ALIAS` and `ANDROID_KEY_PASSWORD`. Local release builds read\nthe same values from an untracked `keystore.properties` at the repository root.\n\n## Star history\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?type=date&repos=Giton22%2Fherald\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Giton22\u002Fkyllene&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Giton22\u002Fkyllene&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star history chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Giton22\u002Fkyllene&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\n\nKyllene is released under the [MIT License](LICENSE).\n\nIt's built to work with [Hermes Agent](https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent) by Nous Research,\nalso MIT-licensed, and follows Hermes Desktop's behaviour and some of its wording so the two feel alike.\n\"Hermes\" and \"Hermes Agent\" are names of Nous Research's project; Kyllene uses them only to say what it\nworks with. Icons are from [Lucide](https:\u002F\u002Flucide.dev) (ISC License).\n",2,"2026-10-31 04:26:40","CREATED_QUERY"]