Armor is a secure, easy-to-use, offline-first PGP desktop application built with Rust (Tauri) and SvelteKit. It allows users to manage keys, encrypt, decrypt, sign, and verify files with a modern, user-friendly interface.
- Secure: Built on
sequoia-openpgpand Rust. Keys are stored locally in an encrypted SQLite vault (or custom location). - Offline-First: Designed to work entirely without an internet connection.
- Modern UI: Clean, responsive interface built with Svelte and customized Tailwind CSS.
- Cross-Platform: Runs on macOS, Windows, and Linux.
- Key Management: Generate (RSA/Ed25519), Import, Export, and Delete keys.
- File Operations: Encrypt, Decrypt, Sign, and Verify files easily.
- Database Management: Backup and Restore your key vault.
- Frontend: SvelteKit, TypeScript, Tailwind CSS
- Backend: Rust, Tauri v2
- Database: SQLite (via
rusqlite) - Cryptography: Sequoia OpenPGP (
sequoia-openpgp)
Before you begin, ensure you have the following installed:
- Xcode Command Line Tools:
xcode-select --install
- Microsoft Visual Studio C++ Build Tools:
- Download from Visual Studio Downloads.
- Select "Desktop development with C++" workload during installation.
- System Dependencies (Ubuntu/Debian example):
(Note: Package names may vary for other distributions like Fedora or Arch.)
sudo apt update sudo apt install libwebkit2gtk-4.0-dev \ build-essential \ curl \ wget \ file \ libssl-dev \ libgtk-3-dev \ libayatana-appindicator3-dev \ librsvg2-dev
-
Clone the Repository
git clone https://github.com/yourusername/armor.git cd armor -
Install Frontend Dependencies
bun install
⚠️ Gunakan bun (bukan npm) karena project ini menggunakan native binding yang hanya compatible dengan bun. -
Run Development Mode This will start the frontend dev server and the Tauri backend simultaneously.
cargo tauri dev
Or alternatively via bun:
bun run tauri:dev
The application window should open automatically.
This project includes a GitHub Actions CI/CD workflow. The easiest way to automatically build the application for Windows, macOS, and Linux is by creating a new release version (Tagging).
- Ensure all code changes are committed and pushed to GitHub.
- Create and push a new tag starting with the letter
v(e.g.,v1.0.14). Pushing this tag will automatically trigger GitHub Actions to build the application (.exe,.dmg,.deb,.AppImage).git tag v1.0.14 git push origin --tags
- Open the Actions tab in your GitHub repository to monitor the build process.
- Once completed, all installer files (
.exe,.dmg,.deb, etc.) will automatically appear and be available for download on the GitHub Releases page.
If you are on macOS or Windows and want to build the Linux version locally without installing system dependencies:
- Build the Image:
docker build -t armor-builder . - Run & Extract:
Note: On Apple Silicon, this produces an ARM64 Linux build. For x86_64, add
# Runs the build and puts artifacts in the 'output' folder in your current directory docker run --rm -v "$(pwd)/output:/app/src-tauri/target/release/bundle" armor-builder
--platform linux/amd64(slow).
To build manually, you generally must be on the OS you are building for.
bun run tauri build
# Output: src-tauri/target/release/bundle/macos/Requirements: libwebkit2gtk-4.0-dev, build-essential, curl, wget, libssl-dev, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev.
bun run tauri build
# Output: src-tauri/target/release/bundle/deb/Requirements: C++ Build Tools and WebView2.
bun run tauri build
# Output: src-tauri/target/release/bundle/nsis/├── src/ # SvelteKit Frontend │ ├── routes/ # Pages (Keys, Encrypt, Settings, etc.) │ ├── lib/ # Components, Stores, API wrappers │ └── app.html ├── src-tauri/ # Rust Backend │ ├── src/ │ │ ├── commands/ # Tauri Commands (API implementations) │ │ ├── core/ # Business logic (Crypto, Database) │ │ ├── lib.rs # App entry point & registration │ │ └── main.rs │ ├── Cargo.toml # Rust dependencies │ └── tauri.conf.json # Tauri configuration └── package.json
## 🤝 Contributing
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## 📄 License
This project is licensed under the MIT License - see the LICENSE file for details.