Deployment Compatibility

JACS includes native bindings (Rust compiled to platform-specific libraries), so deployment depends on pre-built binary availability for your target platform.

Supported Platforms

PlatformLanguageNotes
Linux (x86_64, aarch64)AllPrimary target
macOS (Apple Silicon, Intel)AllFull support
Windows (x86_64)Rust, Node.jsPython wheels may need manual build
AWS LambdaPython, Node.jsUse Lambda layers for native deps
Docker / KubernetesAllStandard containerization
Vercel (Node.js runtime)Node.jsVia serverless functions

Not Yet Supported

PlatformWhyWorkaround
Cloudflare WorkersNo native module support (WASM-only)Use a proxy service
Deno DeployNo native Node.js addonsUse Deno with --allow-ffi locally
BunNative builds may failUse Node.js runtime instead
Browser / WASMPost-quantum crypto not available in WASMPlanned for a future release

Version Requirements

LanguageMinimum Version
Rust1.93+ (edition 2024)
Python3.10+
Node.js18+ (LTS recommended)

Docker Example

FROM python:3.12-slim
RUN pip install jacs
COPY . /app
WORKDIR /app
RUN python -c "import jacs.simple as j; j.quickstart()"
CMD ["python", "main.py"]

Lambda Deployment

For AWS Lambda, include the JACS native library in a Lambda layer or bundle it in your deployment package. Set JACS_PRIVATE_KEY_PASSWORD as a Lambda environment variable (use AWS Secrets Manager for production).

Building from Source

If no pre-built binary exists for your platform:

# Python
pip install maturin
cd jacspy && maturin develop --release

# Node.js
cd jacsnpm && npm run build

Requires Rust 1.93+ toolchain installed via rustup.