Saltar al contenido principal

Middleware Pipeline

Transform GoZen into a programmable AI API gateway with pluggable middleware.

Overview

Requests and responses flow through a middleware chain. Each middleware can intercept, modify, or enhance traffic.

Configuration

{
"middleware": {
"enabled": true,
"middlewares": [
{
"name": "context-injection",
"enabled": true,
"config": {
"inject_cursorrules": true,
"inject_claude_md": true
}
},
{
"name": "rate-limiter",
"enabled": true,
"config": {
"requests_per_minute": 60
}
}
]
}
}

Built-in Middleware

context-injection

Auto-inject project context files into requests.

{
"name": "context-injection",
"config": {
"inject_cursorrules": true,
"inject_claude_md": true,
"max_inject_tokens": 2000
}
}

request-logger

Enhanced request/response logging.

{
"name": "request-logger",
"config": {
"log_headers": false,
"log_body": true,
"max_body_size": 1000
}
}

rate-limiter

Per-session rate limiting.

{
"name": "rate-limiter",
"config": {
"requests_per_minute": 60,
"burst": 10
}
}

compression

Context compression as middleware (wraps the compression feature).

{
"name": "compression",
"config": {
"threshold_tokens": 50000
}
}

Plugin Sources

SourceDescription
builtinCompiled into GoZen
localGo plugins (.so) from disk
remoteDownloaded from URL

Local Plugin

{
"name": "my-plugin",
"source": "local",
"path": "/path/to/plugin.so"
}

Remote Plugin

{
"name": "community-plugin",
"source": "remote",
"url": "https://example.com/plugin-manifest.json"
}

API Endpoints

EndpointMethodDescription
/api/v1/middlewareGETList all middleware
/api/v1/middlewarePUTUpdate middleware config
/api/v1/middleware/{name}/enablePOSTEnable middleware
/api/v1/middleware/{name}/disablePOSTDisable middleware
/api/v1/middleware/reloadPOSTReload all middleware

Developing Custom Middleware

Creating custom middleware plugins requires implementing the Middleware interface in Go. Documentation for middleware development is coming soon.