k7
k7 是一款专为安全执行不可信代码而设计的自托管基础设施工具。它能够帮助用户轻松创建、管理和编排轻量级的虚拟机沙箱,特别适合需要大规模运行未知代码的场景,例如 AI 智能体、自定义无服务器架构或高安全要求的 CI/CD 流程。
传统方案常使用 Docker 容器来隔离代码,但存在“容器逃逸”等安全风险。k7 通过结合 Kata Containers 和 Firecracker 微虚拟机技术,将每个任务封装在独立的轻量级虚拟机中,提供了比容器更严格的内核级隔离,同时保持了极快的启动速度和极低的资源占用。此外,它还利用 Kubernetes(K3s)进行集群编排,并采用高效的磁盘快照技术,让单台机器能稳定承载数十个并发沙箱。
这款工具主要面向开发者、DevOps 工程师以及人工智能研究人员。如果你正在构建需要动态执行用户提交代码的 AI 应用,或者希望搭建一套完全由自己掌控、无厂商锁定的安全计算平台,k7 是一个非常理想的选择。目前项目处于测试阶段,完全开源且免费,为构建下一代安全的分布式计算环境提供了坚实的技术底座。
使用场景
某 AI 初创公司构建了一个代码解释器 Agent,允许用户上传 Python 脚本进行数据分析和可视化,系统需自动执行这些不可信的第三方代码。
没有 k7 时
- 安全风险高:传统 Docker 容器共享宿主机内核,恶意代码极易通过容器逃逸攻击窃取服务器敏感数据或控制整个集群。
- 资源隔离差:多个用户的计算任务在同一节点争抢资源,单个死循环脚本即可导致整个服务响应停滞,影响其他正常业务。
- 启动速度慢:为追求安全而采用的重型虚拟机方案启动耗时数秒,无法满足 AI Agent 对代码执行“秒级甚至毫秒级”响应的实时性要求。
- 运维成本高:自行搭建和维护基于 Kata Containers 或 Firecracker 的底层架构极其复杂,团队需耗费大量精力处理网络、存储快照等基础设施问题。
使用 k7 后
- 内核级安全隔离:k7 利用 Firecracker 微虚拟机技术,为每个代码任务提供独立的轻量级内核,彻底阻断容器逃逸风险,确保恶意代码无法触及宿主机。
- 弹性资源调度:基于 Kubernetes 编排,k7 能高效管理成千上万个沙箱实例,自动隔离异常消耗资源的任务,保障核心服务稳定运行。
- 极速冷启动:得益于优化的镜像快照技术,k7 将沙箱启动时间压缩至亚秒级,让用户感觉代码是即时执行的,大幅提升交互体验。
- 开箱即用:通过简单的 CLI 或 Python SDK 即可部署自托管环境,团队无需深究底层虚拟化细节,专注于上层 AI 业务逻辑的开发。
k7 让企业在拥有公有云般安全隔离能力的同时,保留了私有化部署的成本优势与控制权,是大规模运行不可信 AI 代码的理想基石。
运行环境要求
- Linux (Ubuntu amd64 or arm64)
未说明 (当前主要基于 Firecracker VMM,未来计划支持 Qemu 以运行 GPU 工作负载)
未说明 (需根据运行的 VM 沙箱数量及配置自行规划,示例配置中提及单沙箱可限制为 1Gi)

快速开始
卡塔卡特
面向大规模 AI 计算的自托管安全虚拟机沙箱
卡塔卡特 致力于轻松创建、管理和编排轻量级的安全虚拟机沙箱,以大规模执行不受信任的代码。它基于久经考验的 VM 隔离技术,结合 Kata、Firecracker 和 Kubernetes 构建而成。最初是为了满足需要大规模运行任意代码的 AI 代理而设计,但它也非常适用于:
- 自定义无服务器架构(类似 AWS Fargate,但由您自己掌控)
- 增强型 CI/CD 运行器(无需担心 Docker-in-Docker 的风险)
- 用于 AI dApp 的区块链执行层
100% 开源(Apache‑2.0)。如需技术支持,请发送邮件至:hi@katakate.org
技术栈
卡塔卡特 基于以下技术构建:
- Kubernetes 用于编排,采用 K3s,该版本已具备生产就绪能力,非常适合边缘节点;
- Kata 将容器封装为轻量级虚拟机;
- Firecracker 作为首选的虚拟机管理程序,具有超快启动速度、极小的资源占用和最小化攻击面;
- Devmapper Snapshotter 结合 逻辑卷精简池配置 技术,可高效利用单个节点上数十个虚拟机共享的磁盘空间。
即将推出
- 🛠️ 在 虚拟机沙箱内部 支持 Docker
build/run/compose - 🌐 多节点集群功能,支持分布式工作负载
- 🔍 基于 Cilium FQDN 的 DNS 解析,可安全地白名单域名,而不仅仅是 IP 地址段
- ⚙️ 支持其他 VMM,例如 Qemu,以处理 GPU 工作负载
📋 完整功能路线图及项目优先级,请参阅 ROADMAP.md。
注: 卡塔卡特目前处于 测试阶段,并正在进行安全审查。请谨慎用于高度敏感的工作负载。
使用方法
使用时您需要:
- 承载虚拟机沙箱的 节点
- 发送请求的 客户端
我们提供:
- CLI:直接在节点上使用 -->
apt install k7 - API:部署在主节点上 -->
k7 start-api - Python SDK:与 API 通信的同步/异步 Python 客户端 -->
pip install katakate
当前要求
对于节点
- 主机操作系统为 Ubuntu(amd64 或 arm64)。
- 必须启用并可访问硬件虚拟化(KVM)。
- 检查命令:
ls /dev/kvm应显示文件存在。 - 通常情况下,您自己的 Linux 机器都支持此功能。
- 在云服务提供商中情况各异:
- Hetzner(我目前唯一测试过的厂商)仅在其“Robot”专用实例上支持,即 robot.hetzner.com。
- AWS:仅限
.metalEC2 实例。 - GCP:大多数实例均支持虚拟化,只需添加
--enable-nested-virtualization标志即可。 - Azure:Dv3、Ev3、Dv4、Ev4、Dv5、Ev5(Intel/AMD x86)或 Dpdsv5、Dpldsv5、Epsv5(ARM64)。
- DigitalOcean:启用嵌套虚拟化的高端 Intel 和 AMD Droplet。
- 其他云服务商:一般而言,云 VPS 不会暴露硬件虚拟化功能,因此建议选择专用服务器或裸金属服务器。
- 检查命令:
- 一块原始磁盘(未格式化、未分区),用于 k7 配置的精简池,以实现沙箱的高效磁盘使用。
- 使用
./utils/wipe-disk.sh /your/disk可在配置前将磁盘彻底清空。注意:此操作具有破坏性,会删除数据、分区、格式化信息以及 SWRAID 等内容。
- 使用
- Ansible(用于安装程序):
sudo add-apt-repository universe -y sudo apt update sudo apt install -y ansible - Docker 和 Docker Compose(用于 API):
curl -fsSL https://get.docker.com | sh
已验证的部署方案:
- Hetzner Robot 实例,配备 Ubuntu 24.04,架构为 x86_64 或 ARM64,并额外订购了一块空白磁盘
nvme2n1用于精简池配置。有关设置指南,请参阅 PDF 文件:tutorials/k7_hetzner_node_setup.pdf。
对于客户端
只需最新版 Python 即可。
快速入门
准备您的节点
首先,在将托管虚拟机的 Linux 服务器上安装 k7:
sudo add-apt-repository ppa:katakate.org/k7
sudo apt update
sudo apt install k7
然后让 k7 为您准备好节点及其所有组件:
$ k7 install
当前任务:提醒您注销并重新登录以使组更改生效
在 1 个主机上安装 K7... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:01:41
✅ 安装成功完成!
您可以选择添加 -v 参数以获取详细输出。
系统还会告知您为 LVM 薄池自动选择的原始磁盘。如果您希望明确指定磁盘,可以使用以下命令:
k7 install --disk /dev/nvme2n1
此操作将安装并连接以下组件:
- Kubernetes(K3s 生产就绪发行版)
- Kata(用于容器虚拟化)
- Firecracker(作为虚拟机管理器)
- Jailer(进一步将 Firecracker 虚拟机隔离到 chroot 环境中以增强安全性)
- devmapper 快照程序,配合薄池配置逻辑卷,实现虚拟机高效磁盘存储
设计周全:配置更新不会影响您现有的 Docker 或 containerd 配置。我们选择使用 K3s 自带的 containerd,以尽量减少干扰。不过,安装可能会覆盖已有的 K3s、Kata、Firecracker 和 Jailer 安装。
CLI 使用
您可以通过 CLI 直接在节点上运行工作负载。要创建一个沙箱,只需为其编写一个 YAML 配置文件即可。
k7.yaml 示例:
name: my-sandbox-123
image: alpine:latest
namespace: default
# 可选:限制出站流量(安全模式:仅允许您自己的出站代理 IP)
egress_whitelist:
- "10.0.0.5/32" # 您的私有出站代理/网关
# 可选:资源限制
limits:
cpu: "1"
memory: "1Gi"
ephemeral-storage: "2Gi"
# 可选:在容器启动时运行一次 before_script。网络限制将在 before_script 执行后生效,因此您可以在此处安装软件包、拉取 Git 仓库等。
before_script: |
apk add --no-cache git curl
# 可选:从文件加载环境变量。这些变量在 before_script 和沙箱中均可用。
env_file: path/to/your/secrets/.env
运行命令
# 创建沙箱(默认使用当前目录下的 k7.yaml,也可通过 -f myfile.yaml 指定)
k7 create
# 列出沙箱
k7 list
# 删除沙箱
k7 delete my-sandbox-123
# 删除所有沙箱。您也可以指定命名空间。
k7 delete-all
API 使用
如果您希望远程管理工作负载,可以直接使用 API:
# 启动 API 服务器(容器化,并通过 Cloudflared 支持 SSL)
k7 start-api
# 生成 API 密钥
k7 generate-api-key my-key1
请确保您的用户属于 Docker 组,以便有权启动或停止 API。
至于密钥的生成、列出和撤销,可能需要 sudo 或 root 权限。
Python SDK 使用
当您的 k7 API 启动后,使用起来非常简单。
通过以下命令安装 Python SDK:
pip install katakate
如果您需要异步支持:
pip install "katakate[async-sdk]"
然后可以这样使用:
from katakate import Client
k7 = Client(
endpoint='https://<your-endpoint>',
api_key='your-key')
# 创建沙箱
sb = k7.create({
"name": "my-sandbox",
"image": "alpine:latest"
})
# 执行代码
result = sb.exec('echo "Hello World"')
print(result['stdout'])
# 列出所有沙箱
sandboxes = k7.list()
# 删除沙箱
sb.delete()
异步版本
import asyncio
from katakate import AsyncClient
async def main():
k7 = AsyncClient(
endpoint='https://<your-endpoint>',
api_key='your-key'
)
print(await k7.list())
await k7.aclose()
asyncio.run(main())
教程
- 使用 K7 沙箱工具的 LangChain ReAct 代理
- 路径:tutorials/langchain-react-agent
- 设置:将 .env.example 复制到 .env 并填写 K7_ENDPOINT/K7_API_KEY/OPENAI_API_KEY
- 运行:python agent.py
- 尝试向它提问任何问题!例如:“列出 / 目录下的文件”
从源码构建
如果尚未安装 make,请先安装:
sudo add-apt-repository universe -y
sudo apt update
sudo apt install make
要将 k7 CLI 和 API 构建成 .deb 包:
make build
随后可以通过以下命令安装:
sudo make install
若需卸载:
sudo make uninstall
注意:如果不是首次安装,建议在重新安装前先运行 make uninstall,以避免 .deb 包中残留旧版本的缓存文件。
快速开发流程
为了加快 CLI 的开发迭代,您可以使用 dev.sh 脚本直接运行 k7 命令,而无需每次重新构建二进制文件:
# 基本命令
./src/k7/cli/dev.sh install
./src/k7/cli/dev.sh list
./src/k7/cli/dev.sh create
# 带选项的安装
./src/k7/cli/dev.sh install -v
./src/k7/cli/dev.sh install --disk /dev/nvme2n1
# 带选项创建沙箱
./src/k7/cli/dev.sh create --name test --image alpine:latest
该脚本使用 uv run 直接执行 CLI 及其所有依赖项,因此您可以立即测试更改,而无需每次都运行 make build。这在迭代 CLI 代码时尤为有用。
构建并运行 API 容器
本地开发镜像:
# 在本地构建 API 镜像
make api-build-local
# 使用本地镜像运行 API(无需拉取)
make api-run-local
从源码构建 katakate Python SDK
推荐使用 uv:
# 创建虚拟环境
uv venv .venv-build
. .venv-build/bin/activate
# 以可编辑模式直接从源码安装
uv pip install -e .
安全性
K7 沙箱默认通过多层安全机制进行加固:
虚拟机隔离:Kata Containers 使用 Firecracker 提供的轻量级虚拟机实现硬件级别的隔离。
- 虚拟机进一步被限制在由 Jailer 实现的 chroot 环境中。
- 启用了 Kata 的 Seccomp 限制。
Linux 功能集:为增强纵深防御,所有 Linux 功能集默认被丢弃(
drop: ALL)。- 只能通过
cap_add参数显式添加所需的权限。 allow_privilege_escalation始终设置为false。- Seccomp 配置文件:
RuntimeDefault。
- 只能通过
非 root 运行:可选地以非 root 用户(UID 65532)运行容器和 Pod:
container_non_root:以非 root 用户运行主容器,并禁用权限提升。pod_non_root:以非 root 用户运行整个 Pod,确保文件系统所有权一致(UID/GID/FSGroup 为 65532)。
API 安全:
- API 密钥以 SHA256 哈希存储,并采用防时序攻击的比较方式。
- 强制设置过期时间,并记录最后使用时间戳。
- 文件存储权限为 600(默认路径为
/etc/k7/api_keys.json)。
网络策略:虚拟机沙箱实现完全的网络隔离。
- 入口隔离:默认阻止所有虚拟机之间的通信,防止沙箱间访问。
- 出口封锁:通过基于 CIDR 的 Kubernetes NetworkPolicy 控制出站流量。
- 当出口被封锁时,DNS 请求将被阻止;仅允许访问
egress_whitelist中的 IP 或 CIDR。 - 仍保留通过
kubectl exec和k7 shell的管理访问权限(这些操作使用 Kubernetes API,而非 Pod 网络)。 - 即将集成 Cilium,以支持域名白名单功能。
更多安全特性目前正在规划中,包括集成 AppArmor。
打包与发布
- 项目结构使用
src/目录:- CLI、API 和核心代码位于
src/k7/下。 - SDK 位于
src/katakate/下。
- CLI、API 和核心代码位于
- 根据打包目标,仅针对
katakateSDK 进行打包;src/k7/下的资源不属于 PyPI 发布内容。 MANIFEST.in文件(用于katakateSDK)应仅包含LICENSE和README.md等必要文件。而src/k7/deploy/*中的部署相关资源则属于 Debian/CLI 打包流程,而非 PyPI 包的一部分。katakate的setup.py位于仓库根目录,并从src/目录中打包。- CLI 的 Debian 包通过
src/k7/cli/build.sh构建,生成dist/k7_<version>_amd64.deb和dist/k7_<version>_arm64.deb。 - CI 流水线(标记为
v*)可以发布 PyPI 版本的 SDK,并上传.deb构建产物。
已知问题
- 尽管已正确传递给 Kata 的配置,并且 Jailer 进程也已启动,但目前看来 Jailer 似乎并未生效。这可能是由于使用了 Kubernetes Secrets 导致的兼容性问题。该问题正在调查中。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。