GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
Wait for production to clear each deploy, and read the evidence when a release fails.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
DEPLOYANGEL_API_TOKEN标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"deployangel": {
"command": "uvx",
"args": [
"deployangel",
"mcp"
],
"env": {
"DEPLOYANGEL_API_TOKEN": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add deployangel --env DEPLOYANGEL_API_TOKEN=your-value -- uvx deployangel mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"deployangel": {
"command": "uvx",
"args": [
"deployangel",
"mcp"
],
"env": {
"DEPLOYANGEL_API_TOKEN": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"deployangel": {
"type": "stdio",
"command": "uvx",
"args": [
"deployangel",
"mcp"
],
"env": {
"DEPLOYANGEL_API_TOKEN": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过域名 deployangel.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:DEPLOYANGEL_API_TOKEN
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.29)于今天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
The DeployAngel agent for Django, FastAPI, Starlette, and Flask, with Celery and RQ jobs. It watches what your app does in production and reports one small aggregated payload per process per minute. DeployAngel uses that to verify every deployment, and to tell you (or your coding agent) when a release is cleared and you can stop watching it.
Requires Python 3.10 or later. The package has no dependencies of its own.
pip install deployangel
Set this in production, for every process (web servers and job workers alike):
DEPLOYANGEL_TOKEN=da_live_... # an ingestion token with the telemetry scope
On Heroku, the DeployAngel add-on sets it for you.
Supports Django 4.2 or later.
# settings.py
INSTALLED_APPS = [
"deployangel.django", ]
That's all. The app puts DeployAngel's middleware at the top of MIDDLEWARE (list it yourself to place it), records requests under WSGI and ASGI, and instruments Celery when it's installed. Reporting is on when DEBUG is off.
Supports FastAPI 0.100 and Starlette 0.27 or later.
import deployangel.fastapi
app = FastAPI() deployangel.fastapi.init(app) # deployangel.starlette.init(app) for Starlette
Call it where the app is created, before it serves requests.
Supports Flask 2.3 or later.
import deployangel.flask
app = Flask(name) deployangel.flask.init_app(app)
Supports Celery 5.3 or later. In Django it's automatic. Elsewhere, call init where the Celery app is created, so worker processes start the agent:
import deployangel.celery
app = Celery("shop") deployangel.celery.init(app)
Supports RQ 1.16 or later. Run workers with DeployAngel's worker class:
rq worker -w deployangel.rq.Worker # or deployangel.rq.SimpleWorker
python manage.py rqworker --worker-class deployangel.rq.Worker # django-rq
RQ runs each job in a forked process that exits as soon as the job ends, so the worker records each job after it finishes, from what RQ saved in Redis. That includes a failed job's traceback, but not the exception of an attempt RQ retries.
The agent must know which release it's running. It finds it in this order:
DEPLOYANGEL_REVISION (the commit SHA) and DEPLOYANGEL_RELEASE_VERSION, if you set themheroku labs:enable runtime-dyno-metadata and heroku labs:enable runtime-dyno-build-metadata; both take effect on the next deployKAMAL_VERSIONRENDER_GIT_COMMITFLY_IMAGE_REF. Fly.io sets no commit, so pass one in for commit-level change tracking (ENV DEPLOYANGEL_REVISION=$GIT_SHA in the Dockerfile, with --build-arg GIT_SHA=$(git rev-parse HEAD))RAILWAY_GIT_COMMIT_SHA, or RAILWAY_DEPLOYMENT_IDSOURCE_COMMIT. Dokku: GIT_REVREVISION file in the app's rootHEAD names, read from .git in the app's root or up to 3 directories above it, without running git. This covers servers deployed by git pull, Fabric, or Ansiblecode: and the first 12 characters of the hash of the file digests the agent already sends (below), with no commit. The same code gives the same fingerprint, so a redeploy of unchanged code isn't a new release. It's computed in the background when the reporter starts, not at boot, and needs file digests on. Without a commit DeployAngel still shows which files changed in a release, but not its commits and pull requests, so the agent logs a warning: set DEPLOYANGEL_REVISION when you canFor other Docker deploys, bake the commit into the image: deployangel install docker adds ARG GIT_SHA and ENV DEPLOYANGEL_REVISION=$GIT_SHA to the end of your Dockerfile, where it doesn't invalidate cached layers, and you build with --build-arg GIT_SHA=$(git rev-parse HEAD). On DigitalOcean App Platform, set DEPLOYANGEL_REVISION: ${_self.COMMIT_HASH} in the app spec.
GET /users/ /, GET /items/{item_id}), never the raw path. At most 100 routes are sent per payload; the rest are folded into __other__.deployangel_published_at, the time they were sent.Payment failed for Jane Doe is sent as it is. If your app's messages might hold personal or health data, turn messages off.DEPLOYANGEL_FILE_DIGESTS=false.It does not send request bodies, parameters, headers, cookies, SQL, logs, or user data.
enable-threads = true).python bench/overhead.py measures this. On an Apple M-series laptop with Python 3.14, recording a request adds about 1.7 µs, and with every route, job, checkpoint, and exception list at its cap the agent holds under 1 MB (0.73 MB at peak), including an hour (60) of unsent minutes.
Environment variables are enough for most apps. In Django, settings go in a DEPLOYANGEL dict; elsewhere, call deployangel.configure before init:
# settings.py
DEPLOYANGEL = { "environments": ["production", "staging"], # default: production only }
deployangel.configure(environments=["production", "staging"])
The agent reports in the environments listed. Python frameworks don't name an environment, so it's DEPLOYANGEL_ENVIRONMENT if set, otherwise development when the framework's debug mode is on and production when it's off. DEPLOYANGEL_ENABLED=true|false forces reporting on or off anywhere. DEPLOYANGEL_URL overrides the API endpoint (default https://api.deployangel.com).
File paths are relative to the app's root, the working directory by default (on Heroku and in most containers, the repository's root). Set DEPLOYANGEL_ROOT if your processes start somewhere else.
Critical flows (for example sign-up or password reset) are always listed in clearance reports:
DEPLOYANGEL = {
"critical_flows": {"password_reset": ["POST /password-reset/", "job:accounts.tasks.send_reset_email"]}, }
Health checks aren't recorded: load balancers and uptime monitors call them all the time and they always answer fast, so they would make your app look busier and healthier than its real pages. The agent recognizes django-health-check, django-alive, and django-watchman wherever they're mounted, and any route at a conventional path (/up, /health, /healthz, /healthcheck, /health_check, /livez, /readyz, /statusz, /ping, /ht, /alive). If yours is somewhere else, list it the way the dashboard shows it. HEAD requests to it are left out too:
DEPLOYANGEL = {"ignored_routes": ["GET /status/"]}
To send exceptions without any message, only their class, fingerprint, and stack frames:
DEPLOYANGEL = {"exception_messages": False} # or DEPLOYANGEL_EXCEPTION_MESSAGES=false
Grouping, new-exception detection, and verdicts work the same, since the fingerprint never uses the message. You lose the message text in the dashboard, notifications, and AI investigation.
Exceptions your code catches aren't seen. To report one for context (handled exceptions never fail a release):
try:
sync_inventory() except UpstreamError as error: deployangel.notify(error)
DeployAngel expects declared recurring tasks on schedule. It reads Celery Beat's beat_schedule (crontabs, and intervals, which repeat from when Beat starts) in the zone Celery uses, and, when django_celery_beat is installed, its enabled periodic tasks. Solar schedules aren't read, and neither are RQ's schedulers, whose jobs live only in Redis. DeployAngel also learns recurring jobs from their history.
Work that something outside the app starts on a schedule, such as cron, Heroku Scheduler, or a Kubernetes CronJob, is invisible to Celery Beat. Declare it by the name it runs under, with a cron line or words like "every day at 4am", in the server's time zone unless you add one ("0 3 * * * America/New_York"):
DEPLOYANGEL = {
"recurring_jobs": { "shop.tasks.send_receipts": "0 3 * * *", # a Celery or RQ task "manage.py send_invoices": "every day at 4am", # python manage.py send_invoices "nightly import": "30 2 * * *", # deployangel.task("nightly import") }, }
"manage.py " is recorded with no code change. with deployangel.task("nightly import"):
run_import()
@deployangel.task("nightly import") def run_import(): ...
django-crontab's CRONJOBS setting is read automatically when django_crontab is installed: each job is expected on its schedule in the server's zone, and its runs are recorded with no change to the job (a job that calls call_command is recorded as manage.py ).
Errors and latency don't catch work that silently stops happening. Count the business events that matte
只显示了开头部分;其余内容请在仓库中阅读