MCP gateway · Cloud agents · Approvals and audit
Cloud workspaces for your AI agents and MCP servers
Give each workspace the tools your agents need. Agents keep running 24/7, and you decide what they can do, approve the sensitive parts and see who ran what.
MCP servers
Connect every MCP server, or run your own in the cloud
Paste the URL of any remote MCP server, bring stdio servers from your laptop or office over a tunnel, or have Meandr run one for you. Every server lands in your virtual workspace, ready for your agents.
- JiraRemote
mcp.atlassian.comconnected - LinearRemote
mcp.linear.appconnected - StripeRemote
mcp.stripe.comconnected - PlaywrightHosted
Docker MCP Catalog · EUrunning - PostgreSQLHosted
Docker MCP Catalog · EUrunning - inventory-mcpHosted
your Dockerfile · USrunning - notesTunnel
stdio · sam-macbookconnected - app-dbTunnel
stdio · office-serverconnected
Paste a URL and pick one of nine sign-in methods. Meandr holds the credential.
From the Docker MCP Catalog, the 20,000+ servers in the Official MCP Registry, or your own Dockerfile.
Local files and databases over stdio, from a laptop or any server you run.
AI agents
Connect every AI agent, or run your own in the cloud
Connect any agent with a single URL, and it gets instant access to your virtual workspace. Or run your coding agents on Meandr, on machines you order, and pick up the conversation from any device.
- Claude Code
claudeSigns in withYour Claude plan or API key - Codex
codexSigns in withYour ChatGPT plan or API key - Copilot CLI
copilotSigns in withYour GitHub Copilot plan - Cursor CLI
cursor-agentSigns in withYour Cursor account - Gemini CLI
geminiSigns in withA Gemini API key or Vertex - Goose
gooseSigns in withAny provider's key - Grok Build
grokSigns in withSuperGrok or an xAI key - OpenCode
opencodeSigns in withAny provider's key
Paste your workspace URL into Claude Desktop, ChatGPT, Cursor or any MCP client, and it gets every tool in your virtual workspace. Hosted agents connect in a click.
Pick the size, from 512 MB to 8 GB, with shared or dedicated CPU, in the EU or the US. Run several agents on one machine, or give each its own.
Each agent's home is a persistent volume, so its repositories, sign-in and conversations survive restarts and power cycles.
Each agent signs in with your own subscription or API key, through its own sign-in. Model usage stays between you and its vendor.
Cloud agents
Give your agents the tools, and let them work 24/7
Your agents run in the cloud with every tool their workspace allows, around the clock. Check in from your laptop, any browser or your phone: it is one session everywhere, right where you left it.
- Every tool in the workspace
Connect an agent to a workspace and it gets its servers: GitHub, Linear, a database, a browser. The workspace's policies and approvals apply to every call.
- Works while you sleep
The agent runs on its own machine for as long as it exists. Close the tab and it keeps going. Nothing stops it for being idle.
- Switch devices, keep the session
Start on your laptop, check in from your phone's browser, finish anywhere. Every device opens the same session, so closing a tab or switching loses nothing.
- Talk to agents from anywhere
Use the Meandr console in your web browser. Apps for iOS and Android are coming: answer approvals and check on your agents on the go.
Acme’s team · Agents › Hosted › release-botworkspaces 1
release-bot ready
Claude Code · FRA · Shared 2 GB · 512 MiB
RestartStop
Terminal
Claude Code runs in it and keeps running after you disconnect. It signs in with /login, with a Claude plan or an Anthropic API key.
Welcome to Claude Code
> Fix the date bug in LIN-482, then open a pull request
⏺ linear – get_issue (MCP)(id: "LIN-482")
⎿ Invoice due dates are off by one day
⏺ Update(src/invoices.ts)
− const due = new Date( issued );
+ const due = parseIsoDate( issued );
⏺ Bash(npm test)
⎿ 214 passed
⏺ github – create_pull_request (MCP)
⎿ #482 Fix invoice due dates
> Looks good. Merge it once CI passesfrom your phone
>
07:42
Terminal
release-bot · the session from your laptop
Welcome to Claude Code
> Fix the date bug in LIN-482, then open a pull request
⏺ linear – get_issue (MCP)(id: "LIN-482")
⎿ Invoice due dates are off by one day
⏺ Update(src/invoices.ts)
− const due = new Date( issued );
+ const due = parseIsoDate( issued );
⏺ Bash(npm test)
⎿ 214 passed
⏺ github – create_pull_request (MCP)
⎿ #482 Fix invoice due dates
> Looks good. Merge it once CI passes
>
ConnectedHostedMenu
One session on every device
iOSAndroidcoming soon
Meandr Apps
Run apps in a few clicks, starting with RAG for your repos
Apps run inside Meandr and add tools to your workspaces. The first is RAG: connect your git repositories, and every agent can search your docs, with no vector database or embedding API to set up.
Repositories1,728 files
- acme/runbooksprivate
412 filesindexed - acme/apiprivate
1,086 filesindexed - acme/handbookpublic
230 filesindexed
Models
Embeddingbuilt inRerankbuilt inContextyour model, optional
Shared with
SupportReleaseData
An agent searchesClaude Code · release-bot
rotate the staging db password
- db/rotation.md
acme/runbooks0.94 - envs/staging.md
acme/runbooks0.81 - docs/secrets.md
acme/api0.62
This month3.4M tokens$0.34
Pick repositories shared from GitHub, or add any public one by its URL. Private repos stay private: only your workspaces can search them.
Both run on Meandr, with no external model and no API key to add.
Connect Anthropic, OpenAI, Mistral or Ollama, and your model writes a line of context for each passage, so searches find more.
Deploy a RAG per product, per team or per repository. There is no limit.
Attach one RAG to several workspaces, and give one workspace several RAGs. Each is indexed once.
It runs on one of your machines. Embedding is $0.10 per million tokens, indexed or searched, and reranked searches $0.25 per 1,000.
An app's tools are workspace tools: policies, approvals and the call log apply to every search.
How the RAG app works More apps are on the way
Control plane
Put a control plane in front of every call
Every call passes Meandr on its way to a server. Your policies decide it, a person approves it when it matters, and the log keeps it: who called, what they asked for and what happened, live and months later.
00:0006:0012:0018:00now
- release-bot
github · merge_pull_requestallow - support-bot
stripe · stripe_api_writependingapproved - qa-agent
postgres · drop_tabledeny - Cursor
github · create_branchallow - support-bot
stripe · stripe_api_readallow
> Refund order 4821, the customer was charged twice
● stripe · stripe_api_write(PostRefunds, amount: 124000)
MCP server “meandr” requests your input
meandr: approval required — stripe_api_write on Stripe
Comment: Charged twice, refund approvedOptional note recorded on the audit trail.
* OTP: K7QM2RVAOne-time code sent to your email.
AcceptDecline
● Refund issued: $1,240.00
Refund order 4821, the customer was charged twice
Calling meandr · stripe_api_write
meandr: approval required — stripe_api_write on Stripe×
Or approve at: console.meandr.com/actions/01a2…
OTPOne-time code sent to your email.
K7QM2RVA
DenyAccept
Refund issued: $1,240.00
- Approve sensitive actions
A risky call waits for you. Answer it in the chat, optionally with a one-time passcode (OTP) from the email.
- Hot log
Every call as it happens: the agent, the tool, the rule that decided and how long it took. Search and filter it for 7 or 30 days, by plan.
- Cold storage
Older calls move to an archive kept for 30 or 90 days. Download the raw logs on any plan.
- Metrics and history
Calls, decisions and latency for each workspace and agent, live and by hour or day.
- Insights
Query months of archived calls, say every denial for one agent since July, and export the result. On Business.
How Meandr works, step by step
Run servers and agents on Meandr or connect the ones you already have, decide what each agent may call, and see every call it makes.
-
01 Meandr MCP
Set up Meandr from Claude, ChatGPT, Cursor or any MCP client
Add mcp.meandr.com to the agent you already use and ask in plain words. It connects MCP servers, creates workspaces and writes policies, and every change shows up in the dashboard.
- Works with Claude Desktop, Claude Code, ChatGPT, Codex, Cursor and VS Code, or any other AI agent
- Give your agent read-only or full access
- OAuth sign-ins and API keys open in your browser, so credentials never pass through the chat
Connect Stripe and Slack
● 2 servers connectedsign-ins opened in your browserRun Playwright from the Docker MCP Catalog
● runningEU · Shared · 512 MBPut all three in a Support workspace, deny by default
● workspace createdhttps://calm-otter.meandr.ioHold refunds over $300 for my approval
● policy addedstripe_api_write · amount > 300What did support-bot do yesterday?
142 calls3 denied · 1 approved
-
02 Hosted agents
Offload your agents to the cloud, then connect and chat like you already do
Run your coding agent on a machine of its own, next to the MCP servers it uses. Connect it to a workspace in one click, and Meandr handles the rest.
- Its own variables for API keys and tokens, encrypted and never shown again
- A persistent home: repositories, sign-in and history survive restarts
- Restart, stop or move it to a bigger machine from the console
- Machine
- FRA · Shared 2 GB
- Memory
- 512 MiB
- Home
- persistent
- Running
- 3 h 12 min
SupportReleaseconnected in one click
VariablesGH_TOKEN••••••••••••encryptedLINEAR_API_KEY••••••••••••encrypted
Open terminalRestartStop
-
03 MCP Hosting
Give your agents the tools they need with hosted MCP servers
Run a database adapter, a filesystem or a browser for your agents: from the Docker MCP Catalog, the 20,000+ servers in the Official MCP registry, or your own Dockerfile. Pick the machine and we run it, with no CLI and no machine of your own.
- Several MCP servers can run on one machine: you control what runs there and how many
- Each server gets its own share of the machine's memory, and each agent that connects its own process
- EU and US regions, more coming. Shared or Dedicated CPU, arm64 or amd64
Search the directory…- PostgreSQLQuery and update your Postgres database.
- MongoDBQuery collections and run aggregations.
- FilesystemRead, write and search files in a folder.
- PlaywrightBrowser automation and testing.
SharedDedicatedarm64amd64512 MB1 GB2 GB -
04 MCP Gateway
Connect any server at a URL
Paste the address of any Streamable HTTP server, from Jira and Linear to your own API, and pick how it signs in. Meandr stores the credential and attaches it on the way out, so your agents never hold it.
- Nine sign-in methods, chosen per server
- OAuth tokens minted and refreshed for you
- AWS SigV4 signed server-side, no proxy or sidecar
Server URLhttps://mcp.atlassian.com/v1/mcpTransportStreamable HTTPAuthentication- None
- Bearer token
- Custom header
- Query-string token
- Basic auth
- OAuth · client credentials
- OAuth · authorization code
- mTLS · client certificate
- AWS · SigV4
-
05 MCP Tunneling
Connect MCP servers running on your own machine or on any remote server
Give agents your local files or a local database: start the stdio server on a laptop or any server you run with one command. The CLI dials out to Meandr, so no port opens and no credential is stored.
- Starts your server with the command you already use
- Reconnects on its own after a restart or a closed laptop
- Set its policies and limits before it ever connects
# your files, from this laptop $ meandr tunnel --id <server-id> -- npx -y @modelcontextprotocol/server-filesystem ~/Projects ✓ notes connected · stdio # a database only the office network can reach office-server $ meandr tunnel --id <server-id> -- npx -y @modelcontextprotocol/server-postgres postgresql://localhost/app ✓ app-db connected · stdio reconnected after a restart · 09:41
- ●notessam-macbook~/ProjectsConnected
- ●app-dboffice-serverpostgresql://localhost/appConnected
-
06 Agents
Point your agent at Meandr
One workspace URL in the agent's MCP config, and its code stays the same. Claude Desktop signs in over OAuth, so there is no token to paste.
- Register an agent to get a bearer token for clients that only send a header
- One key per agent, revoked in one click
- Agent and server can speak different MCP revisions
Claude Code$ claude mcp add --transport http meandr https://calm-otter.meandr.ioCodex$ codex mcp add meandr --url https://calm-otter.meandr.ioClaude Desktop- Settings → Connectors
- Add custom connector
- https://calm-otter.meandr.io
- Sign in, no token to paste
-
07 Security
Decide what each agent may call
Start with "Let Claude use Stripe" and go as fine as you need. Rules allow, deny or require approval, matched on the agent, the tool, the actual arguments, the caller's IP and headers. They run in priority order, and the first match decides.
- Flexible policies for every agent, server and tool, in one place
- A default policy for each workspace decides every call no rule matches
- Rate limits per second, minute and hour, per workspace, agent or server
- Team roles: owners and admins reach every workspace, members only the ones you add them to
- 1Let Claude use Stripeagent Claude Code · server stripeAllow
- 2Protect maingithub.push_files · branch = mainDeny
- 3Refunds over $300stripe_api_write · amount > 300Approve
- 4Office network onlyip not in 10.0.0.0/8Deny
Default policyeverything no rule matchesDeny -
08 Approvals
Human-in-the-loop approvals for risky tool calls
A policy can hold a call until a person says yes. Approvers answer from the dashboard or right in the agent's chat on supported clients, and the agent carries on once they do.
- Approvers notified in the app and by email
- A one-time code from the approver's email when the policy requires it
- A call nobody answers is cancelled at its deadline, and the decision is recorded
support-bot wants to refund $1,240.00
- Server
- Stripe
- Tool
- stripe_api_write
- Policy
- Refunds over $300
- Notified
- app · email
Or in the agent's chatHeld for approval. Reply with the code from your email.
482913
DenyApprove -
09 Insight
Watch every call, live and months later
Each call lands in the real-time log with the agent, the tool, the rule that decided and how long it took. Older calls move to cold storage, where you can query and export them.
- Every decision is recorded, including denials and timeouts
- Filter the live log by agent, server, tool, status or decision
- Download raw logs on every plan, and query them on Business
Calls12,480last 24 hMedian318msp95 1.9sDenied1.4%176 callsHeld2321 approved00:0006:0012:0018:00now
- support-botstripe · stripe_api_readallow
212ms - qa-agentplaywright · browser_clickallow
1.9s - Cursornotes · write_filedeny
3ms - support-botstripe · stripe_api_writeapprove
held
Insight · cold storageagent:support-bot action:denyJul 1 → Oct 1414 callsExport CSV
Built for the data your agents touch
A control plane only works if it stays up and keeps your secrets.
- Payloads
- Metadata and the request by default. A call's response is kept only when a rule captures it, and everything is encrypted at rest for your plan's retention window.
- Credentials
- Upstream keys are sealed with AES-256-GCM under a KMS-wrapped data key, one key per environment. Agents hold only a Meandr token, revoked in one click.
- In transit
- TLS 1.2 or newer in transit. Upstream certificates are verified, and the CLI has no insecure mode.
- Isolation
- Every tenant is isolated along the whole request path, and each of our environments is keyed separately.
- Availability
- Requests enter at the nearest healthy edge location. If a call cannot be recorded, it does not run.
- Compliance
- Built to SOC 2, preparing for the audit. GDPR-aligned: EU SCCs, US processing.
Questions you'd ask anyway
What is Meandr, exactly?
Does it work with the MCP servers I already use?
Will my agent connect, or only the well-known clients?
Which AI agents can I run on Meandr?
What happens to an agent's files when it restarts?
Can several agents share one machine?
What am I actually paying for?
Where does my data actually end up?
Say an agent's token leaks. Then what?
Is any of this open source?
Host your MCP servers and govern every AI agent call
Meandr runs any MCP server for you, from the Docker MCP catalog, the Official MCP registry or your own container. Agents reach every server through one MCP gateway, with no code changes.
Try for freeQuestions? Email us