S
SteadyInfraTech/ai-agent-edge-tunnel
Short-lived Cloudflare Zero Trust tunnels, DNS routes, and Access policies for AI agent workloads
在 GitHub 查看 ↗链接已于 2026-11-14 核查 · HTTP 200 · 打开的是厂商自己的官网
- ★ 数取值
- 0 ★ · SteadyInfraTech/ai-agent-edge-tunnel · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
- 收录与活跃
- 收录于 2026-11-13 · 最近见到 2026-11-14 · 共见到 2 次 · 被 1 个来源列出
- 评分构成
- 综合分 103 · 1 个来源 · repo
常见问题(答案都来自我们的记录)
它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
SteadyInfraTech/ai-agent-edge-tunnel;我们收录于 2026-11-13;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。# ai-agent-edge-tunnel
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
ai-agent-edge-tunnel is a Kubernetes operator designed to provision short-lived Cloudflare Zero Trust Tunnels, DNS routes, and Access policies specifically for ephemeral AI Agent microservices (e.g., AutoGen, LangGraph, CrewAI).
## How it works
yaml
apiVersion: edge.steadyinfra.com/v1alpha1
kind: AgentEdgeTunnel
metadata:
name: sample-agent-tunnel
spec:
service: { name: langgraph-worker, port: 8080 } # in-namespace Service to expose
cloudflare: { zoneID: "...", subdomain: agent-job-8f92 }
ttl: 2h
security:
allowedEmails: [devops@company.com] # or: allowPublic: true
For each object the operator creates, in this order:
1. a Cloudflare Tunnel (its ID and credentials are stored immediately, so retries never leak tunnels);
2. for objects with security.allowedEmails, a Cloudflare Access application and allow policy, so the hostname is protected before it exists (objects with security.allowPublic: true deliberately get none);
3. a proxied DNS CNAME, which is what makes agent-job-8f92. reachable;
4. a cloudflared Deployment in the object's namespace, configured to send that hostname, and nothing else, to service.
If the Access policy of a protected object cannot be created, nothing after it runs: the hostname never goes live unprotected.
When the ttl expires, or the object is deleted, everything is removed in reverse order
(connector first, because Cloudflare will not delete a tunnel that is still connected).
Terminated is final; an expired object is never re-provisioned.
console
$ kubectl get agentedgetunnels
NAME PHASE HOSTNAME CONNECTED EXPIRES
sample-agent-tunnel Active agent-job-8f92.agents.acme.dev true 2026-11-05T14:00:00Z
Active means the tunnel and DNS record exist, plus the Access policy for email-protected objects; CONNECTED is whether the cloudflared pod
has connected to Cloudflare's edge.
### Access policy verification cadence
Email-protected active tunnels re-verify the complete Cloudflare Access application and policy on a per-tunnel
jittered interval of 5-10 minutes. Session reconciliation and Kubernetes watch events reuse the last successful
verification until that deadline, rather than issuing Access API reads on every 10-second session poll. Successful
checks persist their verification time and next deadline in status.
A Cloudflare HTTP 429 is treated as API-budget pressure, not proof of policy drift: the tunnel remains Active,
the existing tunnel state is retained and surfaced as a rate-limit warning, and verification is deferred for a
per-tunnel jittered 1-2 minute backoff. Other verification errors remain visible as unprotected and are retried by reconciliation;
a confirmed policy mismatch still terminates the tunnel fail-closed.
## Exposing an AgentSession
Instead of a fixed spec.service, a tunnel can follow an AgentSession from
agentops-operator:
yaml
spec:
sessionRef: { name: support-session-8f92 } # same namespace; mutually exclusive with service
The session's status.phase and status.endpoint are the whole contract; the session is read as
unstructured, so this operator does not depend on agentops-operator and starts without it installed.
Waiting. Until the session is Bound (or if it does not exist yet), nothing is created in
## How it works
yaml
apiVersion: edge.steadyinfra.com/v1alpha1
kind: AgentEdgeTunnel
metadata:
name: sample-agent-tunnel
spec:
service: { name: langgraph-worker, port: 8080 } # in-namespace Service to expose
cloudflare: { zoneID: "...", subdomain: agent-job-8f92 }
ttl: 2h
security:
allowedEmails: [devops@company.com] # or: allowPublic: true
For each object the operator creates, in this order:
1. a Cloudflare Tunnel (its ID and credentials are stored immediately, so retries never leak tunnels);
2. for objects with security.allowedEmails, a Cloudflare Access application and allow policy, so the hostname is protected before it exists (objects with security.allowPublic: true deliberately get none);
3. a proxied DNS CNAME, which is what makes agent-job-8f92. reachable;
4. a cloudflared Deployment in the object's namespace, configured to send that hostname, and nothing else, to service.
If the Access policy of a protected object cannot be created, nothing after it runs: the hostname never goes live unprotected.
When the ttl expires, or the object is deleted, everything is removed in reverse order
(connector first, because Cloudflare will not delete a tunnel that is still connected).
Terminated is final; an expired object is never re-provisioned.
console
$ kubectl get agentedgetunnels
NAME PHASE HOSTNAME CONNECTED EXPIRES
sample-agent-tunnel Active agent-job-8f92.agents.acme.dev true 2026-11-05T14:00:00Z
Active means the tunnel and DNS record exist, plus the Access policy for email-protected objects; CONNECTED is whether the cloudflared pod
has connected to Cloudflare's edge.
### Access policy verification cadence
Email-protected active tunnels re-verify the complete Cloudflare Access application and policy on a per-tunnel
jittered interval of 5-10 minutes. Session reconciliation and Kubernetes watch events reuse the last successful
verification until that deadline, rather than issuing Access API reads on every 10-second session poll. Successful
checks persist their verification time and next deadline in status.
A Cloudflare HTTP 429 is treated as API-budget pressure, not proof of policy drift: the tunnel remains Active,
the existing tunnel state is retained and surfaced as a rate-limit warning, and verification is deferred for a
per-tunnel jittered 1-2 minute backoff. Other verification errors remain visible as unprotected and are retried by reconciliation;
a confirmed policy mismatch still terminates the tunnel fail-closed.
## Exposing an AgentSession
Instead of a fixed spec.service, a tunnel can follow an AgentSession from
agentops-operator:
yaml
spec:
sessionRef: { name: support-session-8f92 } # same namespace; mutually exclusive with service
The session's status.phase and status.endpoint are the whole contract; the session is read as
unstructured, so this operator does not depend on agentops-operator and starts without it installed.
Waiting. Until the session is Bound (or if it does not exist yet), nothing is created in
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/steadyinfratech-ai-agent-edge-tunnel/)
- 来源
- github · https://github.com/SteadyInfraTech/ai-agent-edge-tunnel
- 按领域浏览
- 开源项目
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。