>_ DevTrendsen

Language

Home

Languages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Security
Java

Running a Messenger with AI Agents on Your Phone: octo-android Example

OCTO

In most corporate chats, bots can only send alerts from monitoring systems or request vacation request approvals. Developers from Mininglamp-OSS decided to go further and created the OCTO platform. The concept is straightforward: digital twins handle routine tasks and initial reasoning, while humans evaluate outcomes and make decisions.

Repository octo-android is the official mobile client for this platform. Unlike most modern corporate messengers, the authors didn't wrap a web app in WebView. We're offered native software built with Kotlin and Java.

What makes the architecture and implementation interesting

The mobile client is based on the TangSengDaoDaoAndroid project and the WuKongIM networking engine. The app communicates with the backend via REST API and maintains a persistent WebSocket connection.

Here's what the client-side is built from:

  • Module wukong-sdk handles real-time message transport.
  • Local storage is organized using Room DB. Chat history and uncached drafts are saved directly on the device.
  • Authorization tokens are stored in secure EncryptedSharedPreferences.
  • Background notifications arrive through the standard service and Firebase Cloud Messaging.

The interface is built following Material 3 guidelines. Some screens are written in Jetpack Compose, while others use classic XML layouts. A separate package agent contains components for working with AI: generation status tracking, tool call preview, and response visualization in streaming mode.

What's it like to build and customize

Developers declare a local-first principle. All data belongs to the user, and the backend octo-server in Go can be easily deployed on your own server.

If you want to build the app from source code for your company's needs, you'll need to complete a mandatory checklist. The project is released without embedded secrets or third-party keys:

  1. Change the default applicationId from com.example.octo to your organization's domain.
  2. Create a project in Firebase and add your own google-services.json to the module folder.
  3. Generate a keystore for signing the release build and configure it in Gradle.
  4. Specify your instance octo-server address in the config.xml file.

Without completing the first three steps, Gradle will refuse to build the final file. But at least there's definitely no third-party backdoors or test certificates in the code.

git clone https://github.com/Mininglamp-OSS/octo-android.git
cd octo-android

# Сборка отладочной версии через CLI
./gradlew :app:assembleDebug

# Установка на подключенное устройство
./gradlew :app:installDebug

For a quick introduction, you don't need to build the project manually. The authors publish ready-made APKs in the Releases section. Just install the app on your smartphone and enter the server address during login.

Ecosystem and unified protocol

The repository octo-android itself opens only part of the overall system. Server logic is held in octo-server, the task manager is separated into octo-matter, and automatic dialog summarization is handled by service octo-smart-summary.

All clients — mobile apps and the desktop version in React — work on the same protocol and use common localization keys. This simplifies maintenance: AI agent logic or typing status display don't require separate rework for each platform.

Who will find this project useful

The repository will be useful for teams looking for an open messenger with self-hosting capability and native LLM agent support. The source code octo-android will also be helpful for Android developers. Here you can look at the implementation of the transport layer based on WuKongIM, offline caching organization in Room, and a convenient interface for streaming neural network responses.

Related projects