ternent.dev
Encrypt text and files in the browser.
Armour is a browser-first wrapper around rage for local encryption and decryption. Encrypt text or files for one or more recipients without sending plaintext to a backend.
Encrypted payload
- Subject
- notes.txt
- Recipient
- age1...
- Format
- Armored ciphertext
- Result
- Ready to share
Features
Browser-first encryption with real portability
Armour gives age-style encryption a clean local-first interface for text and files, without pretending to be a new cryptography protocol.
Browser-native
Encrypt and decrypt locally in the browser without a required backend service.
Text and files
Work with pasted text, typed notes, or uploaded files from the same app surface.
Recipient-based
Encrypt for one or more recipients using public key material instead of inventing a proprietary sharing system.
Portable output
Produce ciphertext that fits cleanly into compatible age and rage-style workflows.
Local encryption flow
- 1
- Choose text or file
- 2
- Add recipient keys
- 3
- Encrypt and export
How it works
Encrypt locally, then share the result
Choose your content
Paste text or select a file you want to encrypt.
Add recipient keys
Provide one or more recipient public keys for the people or systems that should be able to decrypt it.
Encrypt and move on
Generate ciphertext locally, then copy or download the output for storage, transport, or handoff elsewhere.
Use cases
Common use cases
Private notes
Encrypt sensitive text locally before storing it in a document, repo, or note system.
File handoff
Encrypt files for a specific person or system without relying on a hosted transfer product.
Browser workflows
Use age-style encryption from the browser when native tooling is inconvenient or unavailable.
Developer tooling
Build browser-based encryption flows into your own tools and internal apps.
Secure upload prep
Encrypt content locally before uploading it to some other storage or delivery surface.
Local-first experiments
Prototype privacy-preserving UX around rage-compatible primitives without inventing a whole new security model.
Developers
A browser wrapper over rage-compatible encryption flows
Armour is designed for people who want the convenience of browser-native encryption while staying close to portable underlying primitives.
Web app
Browser package
Shared utilities
Encrypt inside a browser flow
import { encryptText, decryptText } from "@ternent/armour"
const ciphertext = await encryptText({
text: "hello world",
recipients: [recipientPublicKey]
})
const plaintext = await decryptText({
ciphertext,
identity: privateKey
})Use Armour when you want a cleaner browser-facing wrapper around recipient-based encryption flows instead of wiring lower-level pieces by hand.
View the monorepoDefinition
What Armour is and isn’t
Armour is
- A browser-first wrapper around rage
- A local encryption and decryption tool
- A cleaner UX for recipient-based encryption
Armour is not
- A new encryption algorithm
- A hosted vault
- A messaging platform
- A password manager
Ready to start?
Encrypt locally with Armour
Open the app, add a recipient, and generate portable ciphertext in the browser.