Skip to content

Session iOS - A Decentralized, Onion Routed, Private Messenger

License

Notifications You must be signed in to change notification settings

lux-tel/session-ios

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20,825 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lux Messenger iOS

Private messaging on the Lux Network - A fork of Session iOS

Overview

Lux Messenger iOS is a fork of Session iOS, intended to connect to the Lux Network's SessionVM instead of the Oxen network. This app provides end-to-end encrypted messaging with post-quantum cryptographic protection.

Current Status

Integration Status: In Progress

The iOS app currently uses libsession-util for networking, which has hardcoded network endpoints. Full integration with the Lux SessionVM requires modifications to the underlying C++ library.

What Works

  • Building and running the app
  • Core messaging functionality (against Session mainnet)

What Needs Work

  • Network configuration to connect to Lux SessionVM
  • libsession-util modifications for custom network support
  • Branding updates (Lux Messenger)

Building

Prerequisites

  • Xcode 15.0+
  • iOS 15.0+ deployment target
  • CocoaPods

Build Steps

  1. Clone the repository:
git clone https://github.com/lux-tel/session-ios
cd session-ios
  1. Install dependencies:
pod install
  1. Open the workspace:
open Session.xcworkspace
  1. Build and run in Xcode.

Architecture

Session (iOS App)
├── SessionMessagingKit    # Message handling, encryption
├── SessionNetworkingKit   # Network layer (uses LibSession)
├── SessionUtilitiesKit    # Shared utilities
└── SessionUIKit           # UI components

SessionNetworkingKit
└── LibSession+Networking.swift
    └── libsession-util (C++ native library)
        └── Hardcoded network endpoints

Configuration for Lux Network

Current Limitation

The network configuration in iOS is handled by libsession-util, a C++ library with hardcoded endpoints:

// In libsession-util/src/session_network.cpp
constexpr auto file_server = "filev2.getsession.org"sv;

Planned Approach

To enable Lux network connectivity:

  1. Modify libsession-util (lux-tel/libsession-util)

    • Add environment-based configuration
    • Support custom seed node URLs
    • Support custom file server URLs
  2. Update iOS integration

    • Pass Lux network configuration to LibSession
    • Update UI branding

Related Repositories

Repository Description
luxfi/session Go SessionVM + API layer
luxcpp/session C++ storage server
lux-tel/libsession-util Native library (needs modification)
lux-tel/session-desktop Desktop client (configured)
lux-tel/session-android Android client

Development

Key Files

File Description
SessionNetworkingKit/SessionNetwork/SessionNetwork.swift Network API server config
SessionNetworkingKit/LibSession/LibSession+Networking.swift LibSession integration
SessionUtilitiesKit/General/Feature.swift Feature flags
Session/Meta/SessionApp.swift App entry point

Debug Configuration

Feature flags can be enabled in developer settings for debugging:

  • forceOffline - Test offline behavior
  • truncatePubkeysInLogs - Privacy in debug logs

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

GPL-3.0 - Same as upstream Session iOS

Upstream

This project is a fork of Session iOS by the Session Technology Foundation.

About

Session iOS - A Decentralized, Onion Routed, Private Messenger

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 99.1%
  • Python 0.4%
  • Shell 0.3%
  • Objective-C 0.2%
  • Jsonnet 0.0%
  • Perl 0.0%