IdentArk Gateway

io.identark由 identark.io 发布官方发布者v0.1.0更新于 Nov 2, 2026

Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.

已验证Streamable HTTP可网页运行金融安全与监控AI 与机器学习

概览

AI 生成的概览

远程 IdentArk 网关,让助手通过带风险评分与审计的控制平面执行 LLM 调用和付款等受管操作。

可以做什么
  • 经 IdentArk 控制平面路由 LLM 推理,并按单次调用和会话统计成本
  • 请求付款链接、付款、退款等受管操作,执行前受授权、预算与人工审批约束
  • 把 Stripe、Paystack、GitHub、AWS 等提供方密钥留在 IdentArk,而非放在智能体中
  • 在控制平面保存对话历史,使会话在重启后仍可延续
  • 查询能力请求的执行状态,包括等待审批的结果
适用场景
适用于智能体需要调用 LLM 或触发涉及资金、权限较高的操作,但自身不应持有提供方密钥,并希望在操作前加入审批、预算和审计的场景。
运行要求
通过 streamable HTTP 连接 api.identark.io 远程端点。认证为必需,使用 Authorization 请求头携带 Bearer 令牌,即形如 iak_ 开头的 IdentArk API 密钥。未声明环境变量或本地安装包。
安装前请注意
Authorization 请求头携带 IdentArk API 密钥,应视为机密。请求可能触发真实付款、付款链接和退款,会实际花钱,并依赖人工审批与预算限制。操作由持有你提供方凭据的第三方控制平面执行,调用会在该处被审计。

安装

在 SourceWeft 中

  1. 打开 控制台中的 IdentArk Gateway,将其添加到工作区。
  2. 连接 Authorization token 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.identark%2Fgateway/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "identark-gateway": {
      "type": "http",
      "url": "https://api.identark.io/v1/mcp/rpc",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

[IdentArk]

identark

The AgentGateway Protocol — secure, scalable AI agent execution infrastructure.

[CI] [PyPI] [Python] [License: MIT]


The problem

When an AI agent can execute code, call APIs, or access files, it runs in a process. That process has an environment. That environment typically contains everything that can cause serious damage: LLM API keys, database credentials, AWS tokens.

The naive solution — run your agent on the same backend as your REST API — creates two problems at once:

  1. Security: The agent can access every secret on the machine.
  2. Reliability: A memory-hungry agent degrades your API. Redeploying your API kills all running agents.

identark solves both.


How it works

The SDK implements the AgentGateway Protocol — a clean interface between your agent logic and the outside world. Two implementations ship out of the box:

GatewayWhen to useCredentialsHistory
DirectGatewayLocal development, CI evalsYour API keyIn-memory
ControlPlaneGatewayProduction on IdentArkZero — none in the agentControl plane DB

Your agent code is identical in both environments. The switch is two lines.


Quick start

bash
pip install identark[openai]
python
import asynciofrom openai import AsyncOpenAIfrom identark import DirectGateway, Message, Role
async def main():    gateway = DirectGateway(        llm_client=AsyncOpenAI(),   # Your API key — not in the agent loop        model="gpt-4o",    )
    response = await gateway.invoke_llm(        new_messages=[Message(role=Role.USER, content="Hello, IdentArk!")]    )
    print(response.message.content)    print(f"Cost: ${response.cost_usd:.6f}")
asyncio.run(main())

Moving to production

Change two lines. Your agent logic is untouched.

python
# Before (local)from identark import DirectGatewaygateway = DirectGateway(llm_client=AsyncOpenAI(), model="gpt-4o")
# After (production — agent holds zero secrets)from identark import ControlPlaneGatewaygateway = ControlPlaneGateway()  # auto-detects env vars inside a IdentArk sandbox

Governed actions (payments, payment links, refunds)

The agent asks the control plane to act; the provider key (Stripe, Paystack, GitHub or AWS) stays in IdentArk. Grants, budgets and human approval apply before anything executes, and a reused idempotency key never acts twice.

python
request = await gateway.request_capability(    "payments.payment_link.create",    "paystack",    {"amount_minor": 1_500_000, "currency": "NGN",     "customer_email": "[email protected]", "reference": "order-1001"},    idempotency_key="order-1001-link",)# "succeeded" returns the checkout link; "pending_approval" waits for a person.execution = await gateway.get_capability_execution(request["request_id"])

Installation

bash
# Core SDK onlypip install identark
# With OpenAI supportpip install identark[openai]
# With Anthropic supportpip install identark[anthropic]
# With Google Gemini supportpip install identark[gemini]
# With Mistral AI support (EU provider)pip install identark[mistral]
# All cloud providerspip install identark[all]

Requirements: Python 3.10+

Using TypeScript? The parity SDK ships as the zero-runtime-dependency identark npm package, with the same AgentGateway contract and structured credential sessions.


Data Sovereignty

IdentArk is designed from the ground up to work with any LLM provider, including those that keep your data inside the UK or EU. The AgentGateway Protocol decouples your agent logic from the inference provider — switching providers requires changing one line.

Run fully local with Ollama (zero data egress)

python
from openai import AsyncOpenAIfrom identark import DirectGateway
gateway = DirectGateway(    llm_client=AsyncOpenAI(        base_url="http://localhost:11434/v1",        api_key="ollama",    ),    model="llama3.2",    provider="local",   # forces $0 cost tracking; inference stays on your machine)

Install Ollama: brew install ollama && ollama pull llama3.2 && ollama serve

Use Mistral AI (EU data residency)

python
from openai import AsyncOpenAIfrom identark import DirectGateway
gateway = DirectGateway(    llm_client=AsyncOpenAI(        base_url="https://api.mistral.ai/v1",        api_key="your-mistral-api-key",    ),    model="mistral-small-latest",   # auto-detected as "mistral" provider)

Mistral AI is a French company. All inference runs in EU data centres, subject to EU data protection law (GDPR). Use this when UK/EU data governance requirements prohibit sending inference traffic to US-based cloud providers.

See examples/ for complete runnable scripts.


The AgentGateway Protocol

Any class implementing these four async methods is a valid gateway:

python
class AgentGateway(Protocol):    async def invoke_llm(self, new_messages, tools=None, tool_choice="auto") -> LLMResponse: ...    async def persist_messages(self, messages) -> None: ...    async def request_file_url(self, file_path, method="PUT") -> PresignedURL: ...    async def get_session_cost(self) -> float: ...

Write your agent against the protocol. The implementation — local or production — is a runtime detail.


Features

  • Zero-secret agents — ControlPlaneGateway holds no API keys, database credentials, or cloud tokens
  • Stateless by design — conversation history owned by the gateway, not the agent; kill and restart without data loss
  • Framework-agnostic — works with LangChain, LlamaIndex, raw API calls, or any custom agent framework
  • Built-in cost tracking — every invoke_llm call returns cost_usd; get_session_cost() returns the running total
  • OpenAI + Anthropic — both providers supported in DirectGateway out of the box
  • MockGateway for testing — no LLM calls in your test suite; full call recording for assertions
  • Full type annotations — py.typed marker; works with mypy strict mode

Testing your agents

python
from identark.testing import MockGatewayfrom identark.models import LLMResponse, Message, Role
async def test_my_agent():    mock = MockGateway()    mock.queue_response(LLMResponse(        message=Message(role=Role.ASSISTANT, content="The answer is 42."),        cost_usd=0.001,        model="mock",        finish_reason="stop",    ))
    result = await my_agent(gateway=mock)
    assert mock.invoke_llm_call_count == 1    assert mock.total_messages_sent == 1

Supported providers

ProviderData residencyDirectGatewayGeminiGatewayControlPlaneGateway
OpenAI (gpt-4o, gpt-4o-mini, …)US✓—✓
Anthropic (Claude models)US✓—✓
Google GeminiVaries✓*✓Roadmap
Mistral AIVaries✓—✓
Kimi / MoonshotVaries✓*—✓
Azure OpenAIConfigured Azure region✓*—✓
AWS BedrockConfigured AWS region——✓
OpenRouterProvider-dependent✓*—✓
OllamaLocal 🏠✓—Not a hosted route
Any OpenAI-compatible endpointVaries✓—✓ (custom endpoint)

*Via an OpenAI-compatible client/base URL. Use GeminiGateway for native Gemini SDK features.


Error handling

python
from identark.exceptions import CostCapExceededError, RateLimitError, IdentArkError
try:    response = await gateway.invoke_llm(new_messages=[...])except CostCapExceededError as e:    print(f"Cost cap of ${e.cap_usd} reached. Spent: ${e.consumed_usd}")except RateLimitError as e:    await asyncio.sleep(e.retry_after_seconds)except IdentArkError as e:    # Catch-all for any SDK error    raise

Full exception hierarchy: IdentArkError > GatewayError > ControlPlaneError > AuthenticationError | CostCapExceededError | SessionNotFoundError


Architecture

┌─────────────────────────────────────┐│            Your Agent Code          ││   (depends only on AgentGateway)    │└──────────────┬──────────────────────┘               │    ┌──────────▼──────────┐    │    AgentGateway      │  ← Protocol (interface)    │      Protocol        │    └──────┬────────┬──────┘           │        │  ┌────────▼─┐  ┌───▼──────────────┐  │  Direct  │  │  ControlPlane    │  │ Gateway  │  │    Gateway       │  │          │  │                  │  │ Local /  │  │   Production     │  │  Evals   │  │  (zero secrets)  │  └──────────┘  └────────┬─────────┘                         │ HTTP                ┌────────▼─────────┐                │  IdentArk        │                │  Control Plane   │                │  (holds creds)   │                └──────────────────┘

Community


Contributing

Contributions are welcome. Please open an issue before submitting significant changes.

bash
git clone https://github.com/identark/identark.gitcd identarkpip install -e ".[dev]"pre-commit installpytest tests/unit/

See CONTRIBUTING.md for full guidelines.


Roadmap

  • LangChain adapter (IdentArkChatModel)
  • LlamaIndex adapter (IdentArkLLM)
  • Streaming support (invoke_llm_stream)
  • CrewAI integration
  • LangGraph integration (IdentArkNode, IdentArkStreamNode)
  • Pluggable inference backends (distributed compute)
  • identark-cli for one-command control plane deployment

License

The IdentArk SDK is licensed under the MIT License — free for any use, including commercial and closed-source projects. See LICENSE.

The IdentArk control plane (hosted service) is proprietary. The SDK works with any AgentGateway backend, including fully self-hosted ones.


Built on the control plane pattern described in How We Built Secure, Scalable Agent Sandbox Infrastructure.

来源:README.md,提交 c974f1a

工具

0
SourceWeft 尚未读取此服务器的工具。

版本历史

1
  1. v0.1.0最新Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分