Skip to content

Getting Started with Wanaku

Wanaku is a governed action proxy for AI agents. It sits between agents and backend systems, where it intercepts tool calls and enforces policy, identity, and data controls. Wanaku performs requested actions on behalf of agents, so agents never access backend systems directly.

This guide takes you from installation to a running Wanaku proxy in less than 10 minutes.

Migrating from Classic Wanaku (Java)? Read Migrating from Classic Wanaku for an overview of the changes, compatibility considerations, and migration process.

Prerequisites

You need the following items:

  • A terminal for running commands
  • jq (optional, for formatting JSON output)

Quick Start

1. Download the Server

Wanaku has two variants:

VariantArchive nameDescription
Fullwanaku-server-{version}-{platform}Includes the embedded admin UI at http://localhost:8080/admin
Headlesswanaku-server-headless-{version}-{platform}Does not include the admin UI. Use the management API or CLI to manage Wanaku. You can also include Wanaku in other tools.

Both variants provide the same MCP endpoint, management API, and filter pipeline. Only the full variant includes the admin UI.

Select a variant for your use case. Download it from the early access release page.

Make the binary executable. Move it to a directory in your PATH:

bash
chmod +x wanaku-server
sudo mv wanaku-server /usr/local/bin/

You can also use a container image. Run the command for the selected variant:

bash
# Full (with admin UI)
docker pull quay.io/wanaku/wanaku-server:early-access

# Headless (no admin UI)
docker pull quay.io/wanaku/wanaku-server-headless:early-access

2. Download the CLI

The Wanaku CLI is a separate package. Download the latest wanaku binary from the wanaku-barn early access release page.

bash
chmod +x wanaku
sudo mv wanaku /usr/local/bin/

Verify the CLI installation:

bash
wanaku --version

Note: The Wanaku CLI supports the Java-based Wanaku router and the Rust-based engine. Add the --no-auth flag when the router does not require authentication.

3. Run the Server

bash
wanaku-server

The logs show these two services:

  • MCP endpoint: http://127.0.0.1:8081/default/mcp (default namespace)
  • Management API: http://0.0.0.0:8080/api/v1

4. Verify the Server

Open another terminal. Use the CLI to list the tools:

bash
wanaku tools list --no-auth

The output contains an empty list. The server is running. It has not discovered tools yet.

5. Register a Forward and Discover Tools

Wanaku automatically discovers tools from upstream MCP servers. Use the CLI to register a forward to an MCP server:

bash
wanaku forwards add --service="http://localhost:8180/mcp" --name my-mcp-server --no-auth

Wanaku connects to the upstream server. It discovers and registers all available tools.

List the discovered tools:

bash
wanaku tools list --no-auth

The output lists the tools from the upstream server. Wanaku can now route MCP requests to these tools.

6. Test the MCP Endpoint

Send an MCP tools/list request:

bash
curl -X POST http://localhost:8081/default/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

The server returns a JSON-RPC response. This response lists the tools from the forward. The filter pipeline parses the request. It gets the namespace from the URL path and returns the applicable tools from the registry.

How Wanaku Processes the Request

When you send a request to /default/mcp, the pipeline processes it in this sequence:

  1. CORS filter — Adds CORS headers.
  2. MCP filter (praxis-ai) — Parses JSON-RPC and sets metadata (mcp.method = "tools/list").
  3. Namespace filter — Extracts the "default" namespace from the URL path.
  4. Tool list filter — Queries the registry for tools in the "default" namespace.
  5. Static response — Returns a synthetic JSON-RPC response.

The pipeline does not call downstream services. It returns the tool list directly from the in-memory registry.

Next Steps

Once the basic proxy is running, you can connect more MCP servers, isolate tools and resources with namespaces, and add the controls required by your environment.

Register Additional Forwards

Register more forwards as described in step 5. Each forward connects to one upstream MCP server. Wanaku automatically discovers the tools, resources, and prompts on that server.

Explore Namespaces

Namespaces isolate tools and resources. Each namespace has a name. Wanaku uses this name as the namespace segment in the URL path.

Namespace naming rules:

  • Use only lowercase letters, numbers, and hyphens.
  • Start and end the name with a letter or number.
  • Use 1 to 63 characters.
  • Examples: finance, my-team, staging-42

Create a "finance" namespace:

bash
curl -X POST http://localhost:8080/api/v1/namespaces \
  -H "Content-Type: application/json" \
  -d '{"name": "finance"}'

Register a forward with namespace set to "finance":

bash
curl -X POST http://localhost:8080/api/v1/forwards \
  -H "Content-Type: application/json" \
  -d '{"name": "market-data-server", "address": "http://market-data-mcp:8080/mcp", "namespace": "finance"}'

Send a query to the MCP endpoint for the finance namespace:

bash
curl -X POST http://localhost:8081/finance/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

The response contains only the tools from the market-data-server forward. It does not contain tools from the default namespace.

All MCP endpoints use the /{namespace}/mcp pattern. Paths such as /finance and /mcp do not use this complete pattern. Wanaku rejects these paths.

Use the Admin UI

Note: Only the full distribution contains the admin UI. Use the CLI or the Management API with the headless variant.

Open http://localhost:8080 in your browser. The React-based admin UI communicates with the same management API as the CLI.

Use the admin UI to view and manage tools, namespaces, resources, prompts, and forwards.

Enable Authentication

Wanaku uses oauth2-proxy for authentication. oauth2-proxy receives requests before it sends them to the MCP and management API ports.

Read Authentication for setup instructions. It explains Keycloak configuration and role-based access. It also explains how to run oauth2-proxy locally.

After you enable authentication, use a token to authenticate the CLI:

bash
# Get a token from Keycloak
TOKEN=$(curl -s -X POST http://localhost:8543/realms/wanaku/protocol/openid-connect/token \
  -d grant_type=password \
  -d client_id=wanaku-mcp-router \
  -d client_secret=<your-secret> \
  -d username=test \
  -d password=test | jq -r .access_token)

# Use the CLI with a token
wanaku tools list --host http://localhost:4181 --token $TOKEN

Custom Configuration

You can start the server with optional configuration files:

bash
wanaku-server --pipeline-config /path/to/custom-praxis.yaml \
  --wanaku-config /path/to/wanaku.yaml
  • --pipeline-config: Praxis filter pipeline config (listeners, filter chains)
  • --wanaku-config: Wanaku bootstrap config (forwards, namespaces)

You can omit both files. The server then uses its embedded defaults.

Environment Variables

You can configure Wanaku with environment variables. This table lists the most common variables:

VariableDefaultPurpose
WANAKU_MGMT_LISTEN0.0.0.0:8080Management API listen address
WANAKU_PERSIST_BACKENDfileFile persistence backend. Set to "none" to disable persistence.
WANAKU_PERSIST_PATH$HOME/.wanaku/serverDirectory for registry.json

Read Configuration for the complete list.

Where to Go Next

  • Architecture — See how the filter pipeline, registry, and routing work together.
  • Configuration — Explore the environment variables, YAML options, and configuration patterns.
  • Authentication — Set up oauth2-proxy with Keycloak.
  • Features — Enable evaluators or create a custom feature.
  • Management API — Browse the complete REST API reference.
  • FAQ — Find answers to common questions and problems.

With the proxy running, the next step is to configure Wanaku for your environment and connect the systems your agents need.