Railgun

API Reference

Complete API reference for Railgun's Rust crates.

Railgun is structured as a Cargo workspace with multiple crates.

Crate Overview

CrateDescriptionPrimary Exports
rg-typesShared data structuresConfig, Verdict, HookInput, ToolInput
rg-policyPolicy engineRuntimePolicy, inspect()

Usage Example

use rg_types::{Config, HookInput, Verdict};
use rg_policy::{RuntimePolicy, inspect};
 
fn main() -> eyre::Result<()> {
    // Load config
    let config: Config = toml::from_str(&std::fs::read_to_string("railgun.toml")?)?;
 
    // Build runtime policy
    let policy = RuntimePolicy::from_config(&config)?;
 
    // Inspect a tool call
    let input = HookInput {
        tool_name: "Bash".to_string(),
        tool_input: serde_json::json!({
            "command": "ls -la"
        }),
    };
 
    let verdict = inspect(&input, &policy);
 
    match verdict {
        Verdict::Allow => println!("Allowed"),
        Verdict::Deny { reason } => println!("Denied: {}", reason),
        Verdict::Ask { message } => println!("Ask user: {}", message),
    }
 
    Ok(())
}

Error Handling

CrateError TypeDescription
rg-typesNo errors (pure data)
rg-policyPolicyErrorConfig parsing, pattern compilation
bin/rgeyre::ReportTop-level CLI error handling

Example Error Handling

use rg_policy::{RuntimePolicy, PolicyError};
 
fn load_policy(config: &Config) -> Result<RuntimePolicy, PolicyError> {
    RuntimePolicy::from_config(config)
}
 
// PolicyError variants:
// - InvalidPattern { pattern, reason }
// - ConfigParsing { source }

Thread Safety

All public types are designed for concurrent use:

  • RuntimePolicy is Send + Sync
  • Config is Clone
  • Verdict is Clone + Send

Minimum Supported Rust Version

Railgun requires Rust 1.75 or later.

Next Steps

On this page