str4d/rage

A simple, secure and modern file encryption tool (and Rust library) with small explicit keys, no config options, and UNIX-style composability.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 14 minutes ago
Added to GitGenius on September 19th, 2026
Created on October 8th, 2019
Open Issues & Pull Requests: 67 (+0)
GitHub issues: Enabled
Number of forks: 160
Total Stargazers: 3,657 (+0)
Total Subscribers: 32 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 8.2 days
Mean response time: 57.4 days
90th percentile: 129.4 days
Tracked items: 53

Most active contributors

Sign in to see contributor activity.

How this project is maintained

96% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 68% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 27
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 519 days
Stale 30+ days: 24
Stale 90+ days: 17

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

Detailed Description

rage is a Rust implementation of the age file encryption format that provides simple, secure, and modern encryption with small explicit keys, no configuration options, and UNIX-style composability.

The tool solves the problem of accessible file encryption by implementing the age format specification, which emphasizes simplicity and security through design rather than configuration. It uses modern cryptography primitives including Curve25519 for key exchange and Scrypt for passphrase-based encryption. The approach avoids configuration complexity by making secure choices the only choices, and supports multiple encryption modes: direct recipient encryption using small public keys, passphrase-based encryption with automatic secure passphrase generation, and passphrase-protected identity files for scenarios where the identity itself needs protection.

Developers should choose this tool if they need straightforward file encryption without wrestling with configuration decisions. It suits projects requiring interoperability across implementations, since rage implements the standardized age format and can decrypt files created by other age implementations. The tool is particularly valuable for command-line workflows and scripting due to its UNIX-style composability and support for reading recipients from files or standard input. Hardware security token support is available through the separate age-plugin-yubikey plugin for scenarios requiring YubiKey integration.

The project maintains active engagement with its ecosystem, regularly updating to support current Rust versions and accepting contributions for new package managers and distribution channels. Development follows a deliberate approach to feature requests, with the maintainers carefully evaluating additions against the core principle of simplicity. The codebase demonstrates attention to security practices, including support for pinentry integration for passphrase input and automatic decryption of passphrase-protected identity files. The project maintains clear documentation of its design philosophy and actively directs users toward the broader age ecosystem through curated lists of plugins, implementations, and integrations.