Self-hosting AI agents gives you full control over your deployment environment — the infrastructure, the data, the runtime. For many teams, especially those with compliance requirements or data residency needs, self-hosting is the right choice.
But when those self-hosted agents need to interact with financial systems, the security requirements escalate dramatically. A misconfigured Docker container or an exposed VPS port doesn't just risk data — it risks real money.
This guide walks through practical security hardening for self-hosted agent deployments, with a focus on protecting financial access.
Step 1: Network Isolation
The first line of defense is ensuring your agent runtime is properly isolated from the internet and from other services on the same host.
Docker Network Segmentation
Never run your agent container on the default Docker bridge network alongside other services. Create dedicated networks for each concern:
networks:
agent-internal:
driver: bridge
internal: true # No external access
agent-egress:
driver: bridge # Controlled external access
services:
agent:
networks:
- agent-internal
- agent-egress
# Agent only reaches financial APIs
# through the egress networkKey principles for network isolation:
- Use internal Docker networks for service-to-service communication
- Route external traffic through a dedicated egress network with firewall rules
- Whitelist only the specific IP ranges and domains your agent needs to reach
- Block all outbound traffic by default, then allow specific destinations
VPS Firewall Configuration
If you're running on a VPS, configure ufw or iptables to restrict both inbound and outbound traffic:
- Allow inbound only on SSH (with key-based auth) and any monitoring ports
- Allow outbound only to your specific API endpoints and the Agentic Bank API
- Log all blocked connection attempts for security monitoring
Step 2: Secrets Management
One of the most common OpenClaw security risks is credential exposure. Self-hosted deployments make this worse because secrets often end up in multiple places.
What NOT to Do
- Store API keys in
.envfiles committed to Git - Pass secrets as Docker build arguments (they persist in image layers)
- Use environment variables for long-lived financial credentials
- Share credentials across multiple agents or services
What TO Do
- Use a dedicated secrets manager (HashiCorp Vault, AWS Secrets Manager, 1Password Connect)
- Rotate credentials automatically on a schedule (at minimum, every 24 hours for financial access)
- Use Docker secrets or Kubernetes secrets for runtime injection
- Ensure each agent instance has its own credentials with independent revocation
Step 3: Least-Privilege Container Configuration
Your agent containers should run with the absolute minimum permissions needed to function:
FROM python:3.12-slim # Create non-root user RUN groupadd -r agent && useradd -r -g agent agent # Set read-only filesystem where possible COPY --chown=agent:agent ./app /app WORKDIR /app USER agent # Drop all capabilities, add only what's needed # (done in docker-compose or runtime flags)
Additional container hardening:
- Run containers with
--read-onlyfilesystem where possible - Drop all Linux capabilities with
--cap-drop=ALL - Use
--security-opt=no-new-privilegesto prevent privilege escalation - Set memory and CPU limits to prevent resource exhaustion attacks
- Use a minimal base image (Alpine, distroless) to reduce attack surface
Step 4: Why Financial Operations Deserve a Separate Layer
Even with all the hardening above, there's a fundamental architectural question: should financial secrets and transaction logic live on your infrastructure at all?
The answer, for most deployments, is no. Here's why:
- Blast radius: If your self-hosted agent is compromised, the attacker can only reach what the agent can reach. If financial operations go through a separate managed layer, the agent compromise doesn't expose financial credentials.
- Compliance burden: Hosting financial operations on your infra means your entire stack needs to meet PCI-DSS, SOX, and other compliance requirements. A managed banking layer handles this for you.
- Operational complexity: Financial systems require 99.99% uptime, fraud monitoring, and incident response. Building this on top of self-hosted agent infrastructure is a massive engineering investment.
The recommended architecture is to self-host your agent runtime while routing all financial operations through Agentic Bank's MCP API. Your agent gets a scoped API key — no financial credentials, no card numbers, no bank account details ever touch your infrastructure.
Integration Example
Adding Agentic Bank to a self-hosted agent takes under 10 minutes. Simply add the MCP server to your agent's configuration:
{
"mcpServers": {
"agenticbank": {
"url": "https://mcp.agenticbank.io/sse",
"headers": {
"Authorization": "Bearer ab_sk_..."
}
}
}
}The scoped token in the Authorization header determines exactly what your agent can do — which vendors it can pay, how much it can spend, and what approval rules apply. All enforced server-side, regardless of what your self-hosted agent tries to do.
Integrate Agentic Bank in under 10 minutes — get your API key
Keep your agent self-hosted. Keep financial operations secure. Zero financial secrets stored on your infrastructure.