Skip to content

Repository files navigation

Fortis Ecosystem

A unified, privacy-first security platform. Password manager, authenticator, biometric sudo, encrypted backup, and browser privacy firewall — all in one cohesive system.

StatusNetworkMaintainer


Architecture Overview

graph TD
subgraph Clients
LOCK["fortis-lock<br/>(Chrome Extension)"]
DESKTOP["fortis-desktop<br/>(Tauri App)"]
MOBILE["fortis-mobile<br/>(Android/Compose)"]
CLI["fortis-cli<br/>(Terminal)"]
end
subgraph "fortis-backend (Rust Workspace)"
AGENT["fortis-agent<br/>REST :8023 | IPC | gRPC :50051"]
CORE["fortis-core<br/>(Crypto / Vault / DB)"]
SYNC["fortis-sync<br/>(gRPC Proto)"]
PAM["fortis-pam<br/>(PAM Module)"]
BINDINGS["fortis-bindings<br/>(UniFFI)"]
end
subgraph "Standalone Services"
BACKUP["fortis-backup<br/>(Bash / systemd)"]
OBSERVE["fortis-observe<br/>(Next.js)"]
end
subgraph Storage
DB[("vault.db<br/>SQLCipher AES-256")]
end
LOCK -- "HTTP :8023" --> AGENT
DESKTOP -- "HTTP :8023 / IPC" --> AGENT
MOBILE -- "gRPC via Tailscale" --> AGENT
CLI -- "Unix Socket" --> AGENT
PAM -- "Unix Socket" --> AGENT
AGENT --> CORE
AGENT --> SYNC
CORE --> DB
BINDINGS --> CORE
Loading

Repositories

All repositories live under the Fortis-Ecosystem GitHub organization.

RepositoryLanguageDescription
fortis-backendRustCargo workspace: agent daemon, core crypto library, gRPC sync, PAM module, UniFFI bindings
fortis-cliRustCommand-line interface for interacting with the agent daemon over IPC
fortis-desktopTypeScript/RustTauri v2 desktop application with glassmorphic UI
fortis-mobileKotlinAndroid app (Jetpack Compose) — vault, authenticator, biometric auth
fortis-lockTypeScript/ReactChrome Manifest V3 extension — browser privacy firewall with biometric unlock
fortis-backupBashIncremental backup engine with hard-linked snapshots, systemd integration, and remote sync
fortis-observeTypeScript/Next.jsWebGL telemetry and visitor analytics platform (standalone, isolated)
docsMarkdownThis repository — ecosystem-wide documentation
.githubMarkdownGitHub organization profile

Quick Start

Prerequisites

RequirementVersionPurpose
Rust1.80+ (edition 2024)Backend, CLI, PAM module
Node.js20+Desktop app, Chrome extension
Android StudioLatestMobile app
TailscaleLatestVPN mesh for mobile ↔ agent communication

1. Clone and Build the Backend

git clone git@github.com:Fortis-Ecosystem/fortis-backend.git
cd fortis-backend
# Build all workspace crates
cargo build --release
# Set the API keyexport FORTIS_AGENT_KEY=$(openssl rand -hex 32)

2. Start the Agent

RUST_LOG=info ./target/release/fortis-agent

The agent starts three transport servers:

  • REST API on 0.0.0.0:8023 (Bearer token auth)
  • IPC Socket at /tmp/fortis_agent.sock (owner-only permissions)
  • gRPC on port 50051 (stub — planned for mobile biometric relay)

3. Use the CLI

git clone git@github.com:Fortis-Ecosystem/fortis-cli.git
cd fortis-cli
cargo build --release
./target/release/fortis-cli add "My Secret Note"
./target/release/fortis-cli get "My Secret Note"
./target/release/fortis-cli pair

4. Launch the Desktop App

git clone git@github.com:Fortis-Ecosystem/fortis-desktop.git
cd fortis-desktop
npm install
npm run tauri dev

Note: The desktop app requires fortis-backend/fortis-core at ../../fortis-backend/fortis-core relative to src-tauri/. Ensure the repos are cloned side-by-side in the same parent directory.

5. Load the Browser Extension

git clone git@github.com:Fortis-Ecosystem/fortis-lock.git
cd fortis-lock
npm install
npm run build
# Open chrome://extensions → Enable Developer Mode → Load Unpacked → select dist/

Security Model

  • SQLCipher Vault Encryption — AES-256 encrypted database with 256,000 KDF iterations
  • Argon2id Key Derivation — Master password → 32-byte key via Argon2id (64 MB memory, 3 iterations)
  • ChaCha20-Poly1305 — Symmetric encryption for individual vault field values
  • Ed25519 Signatures — Biometric challenge-response authentication between agent and mobile
  • Zero-Trust Pairing — Devices exchange public keys with a single-use 6-digit OTP
  • Zeroized Memory — All secrets wrapped in zeroize::Zeroizing<String>, wiped from RAM on drop
  • Bearer Token Auth — REST API requires Authorization: Bearer <FORTIS_AGENT_KEY>
  • Socket Permissions — IPC socket restricted to chmod 0600 (owner-only)

Documentation

GuideDescription
Installation GuideFull setup from scratch
API ReferenceREST, IPC, and gRPC endpoint documentation
Architecture GuideSystem design, data flow, component layers
Security ModelEncryption, authentication, threat model
Development GuideBuilding, testing, contributing
Deployment GuideProduction systemd, PAM, Tauri packaging
TroubleshootingCommon issues and debug commands

Recommended Directory Layout

For development, clone all repositories side-by-side:

~/dev/Fortis-Ecosystem/
├── fortis-backend/ # Rust workspace (agent, core, sync, bindings, pam)
├── fortis-cli/ # Rust CLI (standalone)
├── fortis-desktop/ # Tauri desktop app
├── fortis-mobile/ # Android Kotlin app
├── fortis-lock/ # Chrome privacy extension
├── fortis-backup/ # Bash backup engine
├── fortis-observe/ # Next.js analytics (standalone)
├── docs/ # This documentation repo
└── archives/ # Legacy/archived code

Important:fortis-desktop/src-tauri/Cargo.toml depends on fortis-core via a relative path (../../fortis-backend/fortis-core). This layout is required for the desktop app to build.


Maintainer

Ganesh Angadi

About

The central documentation repository for the entire Fortis Ecosystem (Architecture, API, Security, and Deployment guides).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages