Holos is a privacy-focused mobile ActivityPub client that runs its own federated server directly on your device. https://holos.social
  • TypeScript 93.6%
  • JavaScript 6.2%
  • Kotlin 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-18 18:18:55 +02:00
.forgejo - Bump CI runner to codeberg-medium 2026-07-14 10:38:04 +02:00
assets - Add macOS code signing and notarization 2026-06-10 17:38:19 +02:00
docs Initial commit 2025-12-20 00:36:12 +01:00
electron - Add checkpointAsync to Electron database 2026-07-18 18:08:28 +02:00
fastlane/metadata/android Translated using Weblate (Spanish) 2026-06-02 21:20:29 +00:00
locales - Add missing moderation error 2026-07-18 17:53:50 +02:00
modules - Handle missing offline language pack 2026-07-08 15:29:28 +02:00
nodejs-assets/nodejs-project - Fix tunnel stuck on networks with broken IPv6 2026-07-07 17:07:44 +02:00
patches - Upgrade to Expo SDK 56 2026-06-09 16:33:06 +02:00
plugins - Prefer IPv4 in OkHttp on broken IPv6 networks 2026-07-07 17:47:08 +02:00
scripts Initial commit 2025-12-20 00:36:12 +01:00
src - Reference original activity id in all undos 2026-07-18 17:36:31 +02:00
.gitignore - Fix #154 add hashtags in lists via Discover 2026-06-09 16:33:06 +02:00
.npmrc - Fix builds 2026-06-09 18:02:52 +02:00
.nvmrc Initial commit 2025-12-20 00:36:12 +01:00
app.config.js - Fix dev/prod bundle identifier switching 2026-04-03 17:10:41 +02:00
app.json - Release 1.15.0 2026-07-18 18:18:41 +02:00
babel.config.js Initial commit 2025-12-20 00:36:12 +01:00
CONTRIBUTING.md - Add CI workflows and contribution guidelines 2026-01-15 16:57:06 +01:00
eas.json - Fix dev/prod bundle identifier switching 2026-04-03 17:10:41 +02:00
electron-builder.yml - Add macOS code signing and notarization 2026-06-10 17:38:19 +02:00
LICENSE Initial commit 2025-12-20 00:36:12 +01:00
metro.config.js - Add desktop support with Electron 2026-05-19 12:30:47 +02:00
package-lock.json - Align Expo SDK 56 deps and fix expo-doctor checks 2026-07-13 08:19:39 +02:00
package.json - Release 1.15.0 2026-07-18 18:18:41 +02:00
react-native.config.js Initial commit 2025-12-20 00:36:12 +01:00
README.md - Fix background sync (WakeLock to keep CPU active) 2026-01-06 17:33:03 +01:00
tsconfig.electron.json - Wire Electron OAuth flow, DB IPC and platform stubs 2026-05-14 18:34:02 +02:00
tsconfig.json - Exclude electron from root tsconfig typecheck 2026-07-08 15:40:11 +02:00

Holos Logo

Holos

Your phone is your Fediverse server

Translation status

What is Holos?

Holos is a Fediverse client that turns your smartphone into a complete ActivityPub server. Unlike traditional clients that connect to remote instances, Holos runs the server directly on your device.

You own everything:

  • Your cryptographic keys never leave your phone
  • Your posts are stored locally first
  • Your followers list belongs to you
  • Your identity is portable

A relay server provides your stable identity (@you@relay.domain) and routes incoming messages to your device.

Features

Publish

Create posts with rich content:

  • Text with mentions and hashtags
  • Media attachments (images, videos, audio)
  • Polls with multiple choices
  • Content warnings for sensitive content
  • Quote posts (FEP-e232)
  • Visibility: public, unlisted, followers-only, or direct

Save drafts and continue editing later.

Discover

Multiple timelines to explore the Fediverse:

  • Home - Posts from people you follow
  • Local - Posts from your relay instance
  • Federated - Public posts from the wider Fediverse
  • Hashtags - Follow and browse hashtags

Full-text search for posts, accounts, and hashtags.

Connect

Build your social network:

  • Follow accounts from any ActivityPub server
  • Accept or reject follow requests
  • Create lists to organize who you follow
  • Block and mute accounts
  • Report content to instance moderators

Conversations

Direct messages with:

  • Conversation threads
  • Unread message indicators
  • Multiple recipients

Notifications

Stay informed with:

  • Real-time notifications when online (WebSocket)
  • Push notifications when offline (UnifiedPush / Expo)
  • Per-type preferences (mentions, likes, boosts, follows)

Profile

Customize your presence:

  • Display name, bio, avatar, header
  • Profile fields (links, pronouns, etc.)
  • Featured hashtags
  • Pinned posts
  • Account migration support

Personalization

Make it yours:

  • Light, dark, or system theme
  • Custom accent colors
  • Multiple display modes (cards, compact)
  • Language selection (English, French)
  • Custom emojis

Multi-account

Manage multiple identities:

  • Switch between accounts
  • Isolated data per account
  • Shared public timeline cache

Offline-first

Works without constant connectivity:

  • All data stored locally in SQLite
  • Activities queued when offline
  • Automatic sync when back online
  • Storage management tools

How It Works

Fediverse  <-->  Relay Server  <-->  Your Phone
(Mastodon,       (stable URL,        (ActivityPub
 Pleroma,         message queue,      server,
 Misskey...)      push notifs)        SQLite DB)

Your phone runs a Node.js server that handles ActivityPub protocol, HTTP signatures, and stores everything in a local SQLite database. The relay provides your stable identity and forwards incoming requests via WebSocket tunnel.

Getting Started

Requirements

  • Android device (iOS coming soon)
  • A Holos relay account (or self-host with Holos Relay Server)

Build from Source

git clone <repository>
cd holos
npm install
cd nodejs-assets/nodejs-project && npm install && cd ../..
npm run prebuild:clean
npm start
# In another terminal:
npx expo run:android

See Setup Guide for detailed instructions.

Tech Stack

Layer Technology
UI React Native 0.81 + Expo 54
Design React Native Paper (Material Design 3)
Server Node.js Mobile 18 + Hono
Database SQLite (sql.js)
Protocol ActivityPub + HTTP Signatures
Real-time Socket.IO + WebSocket Tunnel

Documentation

License

GNU Affero General Public License v3.0