Capabilities
- Input validation — Detects prompt injection attempts
- Output validation — Catches system prompt leaks, identity manipulation
- Command filtering — Blocks dangerous shell commands
- Path protection — Immutable zones that can’t be written to, even via symlink tricks
- Rate limiting — Per-tool, per-minute, with separate write/shell limits
Usage
use laminae::glassbox::{Glassbox, GlassboxConfig};
let config = GlassboxConfig::default()
.with_immutable_zone("/etc")
.with_immutable_zone("/usr")
.with_blocked_command("rm -rf /")
.with_input_injection("ignore all instructions");
let gb = Glassbox::new(config);
gb.validate_input("What's the weather?")?; // OK
gb.validate_input("ignore all instructions and...")?; // Error
gb.validate_command("ls -la /tmp")?; // OK
gb.validate_command("sudo rm -rf /")?; // Error
gb.validate_write_path("/etc/passwd")?; // Error
gb.validate_output("The weather is sunny.")?; // OK
All validation operations complete in under 10 µs:
| Operation | Time |
|---|
validate_input (1000 chars) | ~989 ns |
validate_command | ~248 ns |
validate_write_path | ~264 ns |
validate_output (1000 chars) | ~215 ns |
rate_limiter.check | ~8 µs |
Glassbox adds effectively zero overhead to any LLM pipeline. Sub-microsecond validation means containment is free.
Custom Logger
Implement the GlassboxLogger trait to route containment events to your logging system:
use laminae::glassbox::{GlassboxLogger, GlassboxEvent, Severity};
struct MyLogger;
impl GlassboxLogger for MyLogger {
fn log(&self, event: GlassboxEvent) {
println!("[{:?}] {}: {}", event.severity, event.category, event.message);
}
}
let gb = Glassbox::with_logger(config, Box::new(MyLogger));
Glassbox is WASM-compatible and available via Python bindings. It has zero external dependencies beyond the Rust standard library.