Skip to content

mrvigneshvt/Cryptainer

Repository files navigation

Cryptainer

Offline Encrypted Container Manager β€” seal your files into portable, password-protected containers on your own device. AES-256-GCM + Argon2id, 100% offline, zero telemetry.

🌐 cryptainer.forked.online Β· ⬇️ Download Β· πŸ“– Docs

Website Release License: MIT Rust Tauri

Download

Cryptainer is free and open source. Grab a build, or compile from source.

Platform Download Notes
🐧 Linux AppImage Β· .deb AppImage runs on any distro β€” no install
πŸ€– Android APK universal, signed release
πŸͺŸ Windows coming soon build from source
🍎 macOS coming soon build from source
πŸ“± iOS coming soon build from source

All releases & checksums β†’ github.com/mrvigneshvt/Cryptainer/releases

One Rust + Tauri core runs everywhere, so a .ctnr sealed on one platform opens, byte-for-byte, on another.

Features

Core Functionality

  • πŸ” Military-Grade Encryption: AES-256-GCM authenticated encryption with Argon2id key derivation
  • πŸ“¦ Encrypted Containers: Store multiple files in a single encrypted container
  • πŸ”“ Password Protection: Unlock containers with your password β€” no keys stored on disk
  • ⚑ Lazy Decryption: Open a container instantly β€” files decrypt on-demand when you preview them
  • ✏️ Edit Mode: Add or remove files from existing containers with automatic re-encryption
  • πŸ’Ύ Portable Format: Export/import containers using the .ctnr file format
  • πŸ—„οΈ Local Storage: All data stored locally β€” no cloud, no servers, 100% offline

Security Features

  • Memory-Safe Key Handling: AES keys are wrapped in Zeroizing<> and wiped from memory immediately when containers are locked
  • LRU Cache with Zeroization: Decrypted file data is cached (50 MB) and zeroized on eviction or explicit release
  • Session Management: Unlocked containers held in memory only, cleared on lock/app close
  • Integrity Protection: SHA-256 checksums + GCM authentication tags detect tampering or corruption
  • V1 β†’ V2 Auto-Migration: Legacy containers are automatically migrated to the v2 per-file encryption format on unlock
  • Configurable Security Levels: Choose from Fast, Standard, High, or Paranoid Argon2id settings
  • Auto-Lock: Automatically lock containers after configurable period of inactivity (default 5 minutes)

File Support

  • Images: PNG, JPG, GIF, WebP (with preview)
  • Videos: MP4, WebM (with playback)
  • Audio: MP3, WAV, OGG (with playback)
  • Documents: PDF (with embedded viewer)
  • Code Files: 20+ languages with syntax highlighting (Rust, TypeScript, Python, etc.)
  • Text Files: UTF-8 text with line numbers
  • Binary Files: Hex dump view with offset/hex/ASCII display

User Experience

  • πŸ” Search & Filter: Search containers by name or tags
  • 🏷️ Tag System: Organize containers with custom tags, filter by tag
  • πŸ“Š Sort Options: Sort by name, date, size, or file count
  • βš™οΈ Settings: Configure auto-lock timeout
  • πŸ”‘ Password Hints: Optional hints to help remember passwords
  • πŸ’ͺ Password Strength: Visual indicator for password strength
  • 🎨 Themes: PRISM (light, frosted glass) and CIPHER (dark, terminal) β€” two complete design systems

Tech Stack

Backend

  • Rust β€” Systems programming with memory safety (edition 2021)
  • Tauri v2 β€” Secure cross-platform app framework (desktop + mobile)
  • AES-256-GCM β€” Authenticated encryption (via aes-gcm v0.10)
  • Argon2id β€” Memory-hard password hashing (via argon2 v0.5)
  • SQLite β€” Local metadata storage (via sqlx v0.7)
  • LRU Cache β€” Bounded in-memory cache with zeroization (via lru v0.12)
  • Zeroize β€” Automatic secure memory wiping (via zeroize v1.7)

Frontend

  • React 18 β€” UI framework
  • TypeScript β€” Type-safe JavaScript
  • Vite β€” Fast build tooling
  • Zustand β€” Lightweight state management
  • Prism.js β€” Syntax highlighting (via prism-react-renderer)
  • react-dropzone β€” Drag-and-drop file selection

Build from source

Prerequisites

Desktop (Linux / macOS / Windows)

# Clone the repository
git clone https://github.com/mrvigneshvt/Cryptainer.git
cd cryptainer

# Install dependencies
npm install

# Run in development mode
npm run tauri dev

# Build a release bundle (.AppImage, .deb, .dmg, .msi …)
npm run tauri build

Android

# One-time: initialise the Android project (needs Android SDK + NDK)
npm run tauri android init

# Build a signed release APK / AAB
npm run tauri android build

See docs/SETUP.md for detailed setup instructions and platform-specific dependencies.

Usage

Creating a Container

  1. Click "+ New Container"
  2. Select files to encrypt (drag-and-drop or file picker)
  3. Choose security level (Standard recommended)
  4. Set a strong password (min 8 characters)
  5. Optional: Add password hint and tags
  6. Click "Create & Encrypt"

Opening a Container

  1. Click on a container card in the vault grid
  2. Enter your password
  3. Browse files β€” click any file to preview it
  4. Files decrypt on-demand; previews stream for videos/audio

Editing a Container

  1. Open an unlocked container
  2. Click "Edit"
  3. Remove files or add new ones
  4. Enter password to verify and save changes
  5. Container is automatically re-encrypted with fresh nonces

Export/Import

  • Export: Click the ↓ button on a container card β†’ save .ctnr file
  • Import: Click "Import .ctnr" β†’ select one or more files β†’ containers appear in vault

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   React App         β”‚  UI components, Zustand store, previews, auto-lock
β”‚   (TypeScript)      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   Tauri IPC Layer   β”‚  10 type-safe invoke() commands
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   Rust Backend      β”‚  AES-256-GCM, Argon2id, SQLite, LRU cache
β”‚   (src-tauri/src/)  β”‚
β”‚                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚   crypto.rs   β”‚  β”‚  Encrypt/decrypt, key derivation
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  storage.rs   β”‚  β”‚  SQLite CRUD (sqlx)
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  session.rs   β”‚  β”‚  Session store + LRU cache with zeroization
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  export.rs    β”‚  β”‚  .ctnr file format
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  commands.rs  β”‚  β”‚  10 IPC command handlers
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  File System + DB   β”‚  .enc blobs on disk + SQLite metadata DB
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

See docs/ARCHITECTURE.md for the complete module graph, component tree, and data flow.

Container Format

Cryptainer uses two container formats:

Format Description Status
v1 (legacy) Single-blob encryption β€” entire payload encrypted as one AES-256-GCM output Migrated to v2 on unlock
v2 (current) Per-file encryption β€” metadata encrypted separately, each file encrypted individually, lazy decryption, LRU cache Active

See docs/CRYPTO.md for the full cryptographic specification and blob layout.

Security Model

What IS Protected

  • βœ… File contents (AES-256-GCM authenticated encryption)
  • βœ… File names and metadata (inside encrypted metadata section)
  • βœ… Container structure and organization
  • βœ… Integrity (SHA-256 checksums + GCM authentication tags)

What is NOT Protected (Visible in Plaintext)

  • Container name (shown in UI for identification)
  • Creation/modification dates
  • File count and total size
  • Password hint (intentionally visible for user convenience)
  • Algorithm and KDF parameters

Threat Model

  • Protects against: Unauthorized access, offline attacks, database theft, blob tampering
  • Does NOT protect against: Compelled disclosure (password required), memory attacks on unlocked containers, keyloggers/malware on the host system

Development

# Rust unit tests
cargo test

# TypeScript type checking
npx tsc --noEmit

# Rust linting
cargo clippy -- -D warnings

See docs/SETUP.md for full development workflow and docs/CHANGELOG.md for release history.

Project Structure

cryptainer/
β”œβ”€β”€ astro-landing/            # Marketing site β†’ cryptainer.forked.online
β”œβ”€β”€ docs/                     # Documentation
β”œβ”€β”€ src/                      # React frontend
β”œβ”€β”€ src-tauri/                # Rust backend
β”‚   β”œβ”€β”€ src/                  # Rust source modules
β”‚   β”œβ”€β”€ tests/                # Integration tests
β”‚   └── migrations/           # SQLite migrations
β”œβ”€β”€ package.json              # npm dependencies
└── vite.config.ts            # Vite configuration

Documentation

Document Description
docs/IDEA.md Project vision, design philosophy, threat model
docs/ARCHITECTURE.md Module graph, component tree, data flow, dependencies
docs/API.md Complete IPC command reference
docs/CRYPTO.md Cryptographic specifications, blob format, key handling
docs/SETUP.md Development setup guide
docs/CHANGELOG.md Release history

License

MIT License β€” see LICENSE for details.

Acknowledgments

  • Tauri for the secure app framework
  • Argon2 for password hashing
  • AES-GCM for authenticated encryption
  • Prism.js for syntax highlighting

⚠️ Security Notice: This is cryptographic software. While we follow best practices, you are responsible for your data. Always keep backups of important files and use strong, unique passwords.

Made with Rust + Tauri Β· cryptainer.forked.online Β· built by forked.online

About

An Encryption based container system to store your Data securely from Modern world Vulnerabilities - built with: https://platform.forked.online

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages