Try AIControls with free models and a public MCP server
Try AIControls end to end without a paid provider key. You connect a free OpenRouter model and the public DeepWiki MCP server, deploy a small sample agent, and take it from its first blocked call to Enforce. Plan on about 30 minutes, most of it waiting for the agent to make calls.
This guide is for trying things out. For production, connect your organization's provider in the setup wizard. See Protect your first agent.
Before you begin
- A Kubernetes cluster with outbound internet access, and permission to install a Helm chart and deploy a workload. On your workstation, a kind cluster works.
- A free OpenRouter account.
Free models and DeepWiki have limits:
- Free models have daily rate limits, and some of their providers log prompts. Don't send them anything sensitive.
- DeepWiki answers questions about public GitHub repositories only. It needs no sign-in, and AIControls calls it at
mcp.deepwiki.comover the internet, so it doesn't work in an air-gapped cluster.
1. Get a free OpenRouter key
- Sign in at openrouter.ai.
- Create a key at openrouter.ai/settings/keys. It starts with
sk-or-v1-.
Models whose ID ends in :free, such as nvidia/nemotron-3.5-lightning:free, need no credits. The key comes from your own account; AIControls doesn't ship one.
2. Install AIControls
- kind quickstart
- Helm
If you have a checkout of the AIControls source, one command creates a kind cluster, installs AIControls from the checkout, and does steps 3 to 5 for you:
OPENROUTER_API_KEY=sk-or-v1-... DEPLOY_AGENT=1 make kind-quickstart
The command:
- Adds an OpenRouter upstream named
openrouterwith your key. - Grants the free model
nvidia/nemotron-3.5-lightning:freeto the default Workload Blueprint, so agents you register with it can call the model. - Adds the DeepWiki MCP server as
deepwiki. - Deploys the sample agent,
support/faq-agent.
It prints the UI URL and the admin login, and starts a port-forward. Log in. The setup wizard preselects the openrouter upstream as configured; select Test call, then Continue through the remaining steps. Continue at step 6.
For the command's options, see Quickstart on kind. To delete the cluster, run make kind-quickstart-down.
Install AIControls with the Helm chart, and turn on the LLM gateway. Follow Self-hosted Kubernetes getting started:
llmProxy:
enabled: true
The chart defaults discover your cluster's ServiceAccount token issuer and turn on workload attribution, so the gateway can identify the sample agent from its first call. See step 1 of Protect your first agent.
Log in. In the setup wizard, keep Governance for AI agents in Kubernetes selected, then continue at step 3.
3. Add OpenRouter
- In the setup wizard's Model step, select OpenRouter. Or follow No key? Try free models →, which opens this guide.
- Paste your key into OpenRouter API key, and keep the preselected model,
nvidia/nemotron-3.5-lightning:free. - Select Save and test. When Your model answered appears, select Continue.
If you're past the wizard, add the upstream on Settings → Providers instead. See Add a provider, and grant the model in the default Blueprint's Access Binding, which is named default. See Edit the Blueprint's Access Binding.
4. Add DeepWiki
- Go to Inventory → MCP Servers → Registration, and select Add MCP Server.
- Select the DeepWiki preset, or enter the name
deepwiki, the URLhttps://mcp.deepwiki.com/mcp, the Streamable HTTP transport, and no authentication. - Save. AIControls lists the server's tools through the gateway:
read_wiki_structure,read_wiki_contents, andask_question.
If your egress allowlist is restricted, adding the server adds mcp.deepwiki.com to it. See Connect an MCP server.
5. Deploy the sample agent
Deploy the sample FAQ agent from Deploy an agent that calls the gateway. Its defaults match this guide: every five minutes it asks the free model a support question, and calls DeepWiki's read_wiki_structure tool for a public repository:
MODEL: "nvidia/nemotron-3.5-lightning:free"
MCP_TOOL: "deepwiki__read_wiki_structure"
MCP_ARGS: '{"repoName":"facebook/react"}'
Watch its calls. Each call logs one line: ALLOWED, BLOCKED with the reason AIControls gave, or ERROR with the status.
kubectl -n support logs deploy/faq-agent -f
6. Walk through the protection loop
Each step links to its section in Protect your first agent, which has the details.
- Blocked. A new installation blocks calls from unregistered agents (Enforce), so the agent's first calls are blocked, because it isn't registered. The agent logs
BLOCKED (403)withworkload_not_registered, and the Dashboard shows Blocked an unregistered agent. - Discovered. The blocked call puts the agent on Inventory → Workloads as Discovered, with the evidence. See See the agent discovered.
- Register. Select Register it, keep the default Blueprint, and keep Learn first (Audit). See Register it in one step. To see the next calls sooner, restart the agent:
kubectl -n support rollout restart deploy/faq-agent. - Learn first. The agent's calls go through and are recorded. The model call is already granted by the default Blueprint, and the DeepWiki tool call becomes a recommendation on the workload's AI access tab within a few minutes.
- Promote all. Review the recommendations, then select Promote all. See Learn its access, then promote it.
- Enforce. On the Mode card, select Enforce, review the preview, and confirm. The model and the tool it learned stay allowed. See Switch to Enforce.
Blocked call. Make a call the agent never made. Switch the tool to DeepWiki's
ask_question:kubectl -n support patch configmap faq-agent --type merge -p '{"data":{"MCP_TOOL":"deepwiki__ask_question","MCP_ARGS":"{\"repoName\":\"facebook/react\",\"question\":\"What is a hook?\"}"}}'kubectl -n support rollout restart deploy/faq-agentThe agent logs
MCP deepwiki__ask_question BLOCKEDwithaccessdefault:mcp:workload. Or switch the model to another free model, and see the model call blocked instead:kubectl -n support patch configmap faq-agent --type merge -p '{"data":{"MODEL":"google/gemma-4-31b-it:free"}}'kubectl -n support rollout restart deploy/faq-agentThe blocked calls show on Security → Activity. To go back, set
MCP_TOOLandMCP_ARGS, orMODEL, to the values in step 5.- Create Blueprint. On the AI access tab, select Create Blueprint from this workload to reuse the learned access for similar agents. See Reuse its access for similar workloads.
A free model's daily limit shows in the agent log as ERROR (429). That's OpenRouter, not AIControls.
Clean up
To remove the sample agent:
kubectl delete namespace support
With the kind quickstart, delete the whole cluster instead:
make kind-quickstart-down
Spend free credit from several vendors
Several vendors give new accounts free credit or a free tier: DeepSeek grants credit on signup, Groq and Cerebras have rate-limited free tiers, and OpenRouter serves :free models. A route spends one vendor's credit first and moves on when it runs out.
- Add a provider for each vendor on Settings → Providers: select Add Upstream, pick the vendor under OpenAI-compatible vendors, and paste its key. See Add a provider.
- On each provider, add a Model Aliases entry that maps the model name your agents send to that vendor's model, such as
claude-haiku-4-5=deepseek-v4-flashon DeepSeek andclaude-haiku-4-5=openai/gpt-oss-120bon Groq. - On the Routes tab, select Add Route and add the providers as members in the order you want to spend their credit, with Allow cross-provider members on so a vendor without an Anthropic endpoint, such as Groq, can serve Claude Code. See Add a route.
When DeepSeek answers 402 Insufficient Balance, the request fails over to Groq, and the Credit / quota column shows DeepSeek as Out of credit. A session that DeepSeek already served stays on Anthropic-format members, so it fails over to Groq only in a new session; see Cross-provider routes. A rate limit fails over too, but isn't reported as exhausted credit. Each call is priced by the vendor and model that served it.
Related
- Protect your first agent: the same loop with your own provider.
- Setup wizard: every step of the wizard.
- Workload access: Audit and Enforce, recommendations, and the Enforce mode switch.