- Open Source
- /
- Snider Labs
- /
- Enchantrix
Enchantrix
Snider LabsA modular encryption library with a custom .trix binary format and CLI tool. Data flows through chainable "Sigils" - transforms you can combine to build encryption pipelines. The clever bit: it scrambles your data before it ever reaches the CPU, so platform management systems (Intel ME, AMD PSP) never see cleartext. Think of it as encryption that doesn't trust the hardware.
Features
Sigil Framework
Composable transforms with In(data)/Out(data) interface - chain compression, encoding, hashing, and encryption without exposing cleartext to the CPU
ChaChaPolySigil
XChaCha20-Poly1305 authenticated encryption with pre-obfuscation layer - data is scrambled before hitting Ring-3 platform management
.trix Binary Format
4-byte magic, 1-byte version, 4-byte header length, JSON header, payload - with optional checksums
Cryptographic Services
Full crypto facade: multi-algorithm hashing, Fletcher/Luhn checksums, RSA, and PGP operations
Transmute Chaining
Transmute() function chains multiple sigils together for complex transformation pipelines
Cobra CLI
Full command-line interface for encoding, decoding, direct sigil application, and hash operations
Installation
# Install CLI tool
go install github.com/Snider/Enchantrix/cmd/trix@latest
# Or use as library (requires Go 1.25+)
go get github.com/Snider/Enchantrix
Usage
CLI Operations
# Encode to .trix format with magic bytes
echo "Hello, Trix!" | trix encode --output test.trix --magic TRIX base64
# Decode from .trix
trix decode --input test.trix --output test.txt --magic TRIX base64
# Generate hash
echo "Hello, Trix!" | trix hash sha256
# Direct sigil application
trix sigil compress gzip < data.bin > compressed.bin
Sigil Framework (Library)
import "github.com/Snider/Enchantrix/pkg/enchantrix"
// Chain sigils together
pipeline := enchantrix.Transmute(
enchantrix.CompressSigil{Algorithm: "gzip"},
enchantrix.ChaChaPolySigil{Key: key},
enchantrix.Base64Sigil{},
)
// Transform data through the pipeline
encrypted := pipeline.In(plaintext)
decrypted := pipeline.Out(encrypted)
.trix File Structure
┌─────────────────────────────────────┐
│ Magic Bytes (4 bytes) │
├─────────────────────────────────────┤
│ Version (1 byte) │
├─────────────────────────────────────┤
│ Header Length (4 bytes) │
├─────────────────────────────────────┤
│ JSON Header (variable) │
│ - sigils applied │
│ - checksums │
│ - metadata │
├─────────────────────────────────────┤
│ Payload (encrypted data) │
└─────────────────────────────────────┘
Quick Links
More from Snider Labs
Fancy helping out?
Spotted a bug? Got an idea? We'd love to hear from you.
Read the contributing guide →