Engineering

28 posts

Running PII detection locally with the Rampart NER model
Engineering

Running PII detection locally with the Rampart NER model

How Arcjet added an optional on-device model backend for sensitive information detection: a pluggable rule interface, deterministic recognizers for structured data, offset reconstruction for token-classification output, and local ONNX inference in the request path.

Making Arcjet's Wasm bot detector smaller and faster
Engineering

Making Arcjet's Wasm bot detector smaller and faster

Reducing WebAssembly bundle size: how Arcjet shrank its Rust bot detector 27% with Aho-Corasick, keeping per-request memory isolation and using Wizer snapshots.

Designing a CLI for AI agents
Engineering

Designing a CLI for AI agents

How we designed the Arcjet CLI in Go as a stable, defensive interface for humans and AI agents: predictable commands, machine-readable output, strict validation, and confirmation before production changes.

Serving AI models with Open Inference Protocol APIs
Engineering

Serving AI models with Open Inference Protocol APIs

How Arcjet hosts AI security models using Python, Open Inference Protocol, Go, and Modal: the architecture behind prompt injection detection.

How we defend MCP tool outputs from prompt injection
Engineering

How we defend MCP tool outputs from prompt injection

How we defend Arcjet’s MCP tool outputs from prompt injection by separating trusted guidance from untrusted evidence in structured responses.

Building a production MCP server in Go
Engineering

Building a production MCP server in Go

How we built Arcjet’s production MCP server in Go: integrating with an existing API, reusing auth and middleware, designing agent tools, and supporting OAuth discovery.

From devcontainers to VMs: parallel dev environments for AI agents
Engineering

From devcontainers to VMs: parallel dev environments for AI agents

How we replaced a single devcontainer with isolated OrbStack VMs to run multiple parallel development environments for AI agent workflows — architecture, CLI, and tradeoffs.

Introducing the Arcjet Python SDK beta
Python

Introducing the Arcjet Python SDK beta

The Arcjet Python SDK allows you to implement rate limiting, bot detection, email validation, and signup spam prevention in FastAPI and Flask style applications.

Secure Nuxt and React Router Applications at Scale with Arcjet’s New SDKs
Engineering

Secure Nuxt and React Router Applications at Scale with Arcjet’s New SDKs

Arcjet’s mission is to help developers and security teams build with confidence, no matter where they work or what frameworks they choose. As the web evolves, you need tools that fit the way you already develop. That’s why we’re building na

Devcontainers, Little Snitch, macOS TCC - protecting developer laptops
Engineering

Devcontainers, Little Snitch, macOS TCC - protecting developer laptops

How we implement different layers to secure our developer laptops & environments: Devcontainers, outbound firewall, macOS Transparency Consent and Control framework, and SSH agent for Git keys.

Low latency global routing with AWS Global Accelerator
Networking

Low latency global routing with AWS Global Accelerator

How Arcjet uses AWS Global Accelerator to route API requests via low-latency private networking to meet our end-to-end p50 latency SLA of 20–30ms.

The Wasm Component Model and idiomatic codegen
WebAssembly

The Wasm Component Model and idiomatic codegen

Idiomatic code generation for Go using the Wasm Component Model. Compiling for different languages always has tradeoffs, which is why using standards helps everyone.

Multi-framework docs with Astro Starlight
Engineering

Multi-framework docs with Astro Starlight

Framework switching, custom sidebar, custom table of contents, improved SEO, and a better user experience. How we customized Astro Starlight for the Arcjet docs.

Rethinking our REST API: Building the Golden API
Go

Rethinking our REST API: Building the Golden API

Using Go + Gin to reimplement our backend REST API. How we built the golden API: performance & scalability, comprehensive docs, security, authentication, and testability.

Building an email address parser in Rust with nom
Rust

Building an email address parser in Rust with nom

Using Nom to create a safe email validation parser in Rust. How to create combinator parsing that can be compiled to WebAssembly.

Lessons from running WebAssembly in production with Go & Wazero
WebAssembly

Lessons from running WebAssembly in production with Go & Wazero

Lessons learned from running production Go services that call Wasm using Wazero: embedding Wasm binaries, optimizing startup times, pre-initialization, wasm-opt optimizations, and profiling.

WebAssembly on the server: Compiling Rust to WASM and executing it from Go
WebAssembly

WebAssembly on the server: Compiling Rust to WASM and executing it from Go

Server-side WebAssembly: Unifying cross-language logic for high performance and data privacy. Learn how Arcjet leverages WASM for local-first processing.

Replacing Kafka with Redis Streams
Engineering

Replacing Kafka with Redis Streams

Kafka is a powerful message queue & streaming platform, but we opted for starting with a much simpler solution: Redis Streams. This is how we use Redis Streams as a queue.

Approaches to keeping doc code samples up to date
Engineering

Approaches to keeping doc code samples up to date

Interesting how languages with the highest developer satisfaction are also those that make it easy to write documentation (and tests)!

Reviewing AWS ElastiCache Serverless
Engineering

Reviewing AWS ElastiCache Serverless

Reviewing Arcjet's usage of AWS ElastiCache Serverless Redis. Great if you don’t want to think about clusters, nodes and shards, but the pricing is difficult to calculate.