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

Browser-native
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

browser session
1
Choose text or file
2
Add recipient keys
3
Encrypt and export

How it works

Encrypt locally, then share the result

  1. Choose your content

    Paste text or select a file you want to encrypt.

  2. Add recipient keys

    Provide one or more recipient public keys for the people or systems that should be able to decrypt it.

  3. 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

JavaScript
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 monorepo

Definition

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.

ternent.dev

© 2026.