Skip to main content

WyckoffAgent — Open-Source Wyckoff Trading Agent

A 股 / 港股 / 美股威科夫量价分析智能体 — 你说人话,他读盘面。

PyPI Python License Web App Homepage

English | 架构文档


用自然语言和一位威科夫大师对话。系统把 A 股日线行情、威科夫结构识别、AI 研报、持仓风控、形态复盘和通知推送串成一条自动化链路,并已扩展支持港股与美股漏斗扫描。

React Web、CLI、MCP 与 GitHub Actions 共同组成当前产品形态;日线行情通过 TickFlow 实时拉取(无 Supabase 行情缓存),Supabase 仅用于用户配置、持仓、形态复盘、市场信号、信号反馈与任务结果。

Risk disclosure: WyckoffAgent is for educational, research, and informational use. It does not provide investment advice, does not account for every personal financial circumstance, and does not guarantee future performance.


云端运行成本透明

WyckoffAgent 会始终保持开源,欢迎 fork 自行部署、提交 Issue 和 PR。
项目的云端共享服务按付费基础设施运行:行情源、数据库、AI 报告、在线分析服务和自动化维护都会进入显性成本模型。完整成本明细与风险边界见 docs/COST_MODEL.md


Special Thanks

TickFlow TickFlow
感谢 TickFlow 为 WyckoffAgent 提供高质量 A 股 / 美股 / 港股行情数据能力支持。
CZSC
缠中说禅
缠中说禅(CZSC)
感谢顶级交易开源项目缠中说禅(CZSC)的作者 zengbin93 在交易策略上的指导与点拨。

快速开始

CLI(推荐)

# 一键安装
curl -fsSL https://raw.githubusercontent.com/YoungCan-Wang/WyckoffTradingAgent/main/install.sh | bash

# 或 Homebrew / pip
brew tap YoungCan-Wang/wyckoff && brew install wyckoff
uv pip install youngcan-wyckoff-analysis

维护者发布 PyPI 的自动 patch 流程与 Trusted Publishing 一次性配置见 docs/PYPI_RELEASE.md

wyckoff          # 启动 Agent 对话
wyckoff dashboard  # 启动本地可视化面板

启动后 /model 选择模型(Gemini / Claude / OpenAI),输入 API Key 即可对话。

CLI 启动界面

展开更多 CLI 截图
持仓查询 诊断报告 操作指令

Web App

在线地址:wyckoff-analysis.pages.dev

Web 读盘室

展开更多 Web App 截图
漏斗选股 形态复盘
持仓管理 单股分析(脱敏样例)

形态复盘页按数据库实际存在的最近 30 个复盘交易日读取数据:“复盘记录”保留窗口内的数据源行数,“总入选次数”按唯一的股票+入选日统计,“覆盖股票数”和涨跌幅摘要则按股票代码去重。

Streamlit MVP 已下线

Streamlit 已经不再迭代维护,主分支已全面移除 Streamlit 运行代码。相关代码仍保留在 release/streamlit 分支;Streamlit MVP 时期的产品架构和效果图见 docs/STREAMLIT_MVP_ARCHITECTURE.md

本地可视化面板(Dashboard)

wyckoff dashboard

Dashboard 总览

展开更多 Dashboard 截图
形态复盘 信号池
持仓 Agent 记忆 后台任务
对话日志 同步状态 对话日志详情(Trace)

定时任务常驻(macOS launchd)

定时任务默认只在 TUI 打开时运行 —— 关掉窗口就停。装上 daemon 后它独立常驻,关 UI 也继续跑:

scripts/daemon_install.sh      # 装成 launchd 用户级服务
wyckoff daemon --status        # 看运行状态
tail -f ~/.wyckoff/logs/daemon.log
scripts/daemon_uninstall.sh    # 卸载

daemon 持锁时 TUI 会自动让出调度权,两边不会重复触发。

无人监督时的写操作策略。 daemon / wyckoff run 先恢复本机已保存的 CLI 登录态,再跑工具; 否则自动止损会写到本地 USER_LIVE:local 而不是云端持仓。daemon 只会自己执行 set_stop_loss —— 这个工具只能改止损价,签名里没有股数、成本、现金,不移仓也不花钱。其余全部进待批准队列, 并绑定入队时的账户;换号后不能批准别人的项:

wyckoff approve list           # 看待批项
wyckoff approve ok <id>        # 批准并立即执行队列中保存的精确参数
wyckoff approve no <id>        # 拒绝

approve list 会展示脱敏后的完整参数;approve ok 通过正常工具注册表立即执行并记录结果, 失败不会自动重试,避免重复成交。待批项 12 小时后过期且不可批准 —— 隔夜的调仓会按旧价成交。

也可以手动跑一轮,不进 TUI:

wyckoff run "盘前风控检查"

接入外部 MCP server

第三方 MCP server(GitHub、文件系统、你自己的数据源)的工具可以接进同一个会话, 和原生工具走同一套审批闸门。需要 mcp 依赖:uv pip install -e '.[mcp]'

wyckoff mcp-add github --command npx \
  --args -y @modelcontextprotocol/server-github \
  --env GITHUB_TOKEN              # 从当前环境读取,避免把值写进命令历史

wyckoff mcp-test github     # 先试连,列出工具,不进会话
wyckoff mcp-enable github   # 确认没问题再启用
wyckoff mcp-list

接一个 server 等于允许在本机 spawn 它的命令,所以:新增后默认未启用, 配置只能你自己写(模型不能新增 server),本项目自建的 mcp_server.py 会被拒绝接入(工具已内置,接第二遍只会出现两份同名工具)。

外部工具名带 mcp__<server>__ 前缀,不会顶掉原生工具。写操作按工具名和 annotations 启发式识别 —— 认不出就当写,进待批准队列。daemon 无人时 永不自动执行外部写入。

某个 server 连不上只会让它自己不可用,原生工具照常。 错误看 ~/.wyckoff/logs/mcp-<server>.log

回测网格

回测网格最优参数与梯队表

展开更多回测截图
参数矩阵

功能亮点

  • 对话式 Agent — 用自然语言触发诊断、筛选、研报;CLI、Web、MCP 各自按权限编排多工具
  • 主线漏斗筛选 — A 股全市场约 5000 股动态发现概念主线、八通道强度、候选车道和买点确认;NEUTRAL 主线优先,RISK_ON 禁新开
  • 日漏斗 × 次日开盘串联 — 漏斗定候选与环境,跨日 confirmed 后由 OMS 给出唯一允许买入区间,开盘价在区间内才执行;报告顶部固定「执行纪律」
  • 跨市场 — A 股 / 港股 / 美股漏斗独立 workflow
  • AI 三阵营研报 — 逻辑破产 / 储备营地 / 起跳板,LLM 独立审判
  • 信号反馈闭环 — 漏斗记录 observations,盘后 feedback 聚合 health / registry,支持 shadow 动态策略验证
  • 持仓诊断 & 私人决断 — 单股质量先于账户角色;WARNING 只观察,确认破位/硬风险才产生 EXIT/TRIM;非主线 5 日进入复核但不机械卖出
  • Agent 分层记忆 — L1 原子记忆 + L2 场景 + L3 画像,FTS5/代码/关键词混合召回并保留来源追溯
  • Skills 扩展 — 内置 /screen/checkup/report/backtest,用户可自定义
  • Prompt 模板 — 内置 /daily/review-l4/step3-audit 等高频投研模板,也支持 ~/.wyckoff/prompts/*.md
  • 模型元数据与成本可见性wyckoff model list/usage/cost 展示上下文窗口、reasoning 能力和本地 token 成本估算;OpenRouter 模型的上下文窗口取自其 /models 接口的真实值(wyckoff model refresh 刷新),不靠模型名猜
  • 会话分叉与导出wyckoff session export/fork 或 TUI /fork 把历史对话变成可复盘、可继续的新分支
  • 标准事件流wyckoff trace --events <scratchpad.jsonl> / wyckoff diag 产出统一 JSONL,方便复盘工具调用时间线
  • 独立边缘后端 — React 统一调用 Hono Worker;后端提供请求 ID、安全响应头、请求体上限、Redis 共享限流和白名单沙箱任务。读盘室的研究计算必须经用户确认,先进入单并发 Cloudflare Queue,再由签名的 Node 执行桥进入无网络、自动销毁的 Vercel Sandbox;每用户同时仅一个任务,并按日限制创建次数与实际 CPU 用量。Worker 与 bridge 用 requestId/runId 输出不含脚本与密钥的结构化执行日志,本地支持 VS Code 断点与 workerd 集成测试
  • 观察篮临时行情 — 只为当前问题拉取相关 TickFlow 报价,浏览器快照 45 秒后失效,不写入 Redis 或业务数据库
  • 依赖卫生检查 — CI 运行 scripts/check_dependency_hygiene.py,提示 Python/Web 依赖锁定和 lockfile 风险
  • 测试隔离与单次覆盖率 — pytest 不读取本机 .env、底层 socket 默认断网;CI 只执行一次 coverage-instrumented Python 全量套件并复用结果生成覆盖率 artifact
  • MCP Server — 18 个工具通过 MCP 协议对外暴露,Claude Code / Cursor 即插即用;包含研究假设与证据台账
  • 多通道推送 — 飞书 / 企微 / 钉钉 / Telegram
  • 本地面板wyckoff dashboard 一条命令启动可视化

演示视频

「从0到1读盘」Web 全流程(读盘室→设置)
「终端党最爱」CLI 流程(启动→执行→结果)

文档导航

每类事实只在一份主文档中详细维护,其余页面只做摘要和链接:

权威内容 唯一主文档
技术架构、Actions 总表、数据表、缓存 docs/ARCHITECTURE.md
A 股主漏斗的阶段顺序与上下游数据流 docs/A_SHARE_FUNNEL_FLOW.md
信号反馈实现、shadow/on 动态策略 docs/SIGNAL_FEEDBACK_LOOP.md
研究路线、证据门槛与晋级治理 docs/ITERATION_STRATEGY.md
运营成本、规模化预算 docs/COST_MODEL.md
策略语义:漏斗、AI 研报、OMS、回测 README_STRATEGY.md
实盘操作(日漏斗×次日开盘) docs/OPERATOR_PLAYBOOK.md
术语速查 GLOSSARY.md
MCP Server 配置 docs/ARCHITECTURE.md
密钥、Actions Secrets 与本地配置 docs/ARCHITECTURE.md

Wiki 深度阅读交易方法论 Wiki技术架构 Wiki。Wiki 解释方法和设计取舍,不重复维护配置值、工作流清单或数据表契约。


配置

零配置即可使用 — 启动后 /model 添加 LLM API Key 即可对话。

进阶配置见 架构文档

数据源购买:TickFlow → | 大模型购买:1Route →


交流

如果你希望免去行情数据源、数据库、云服务器、AI API 和自动化任务的运维成本,可以加入 「威科夫策略交流学习」知识星球,使用云端共享入口:多端同步、每日全市场漏斗推送、自动 AI 研报和专属交流社区都由共享基础设施统一承载。

年费 CNY 518/年,折合每天约 1.4 元。518 取“我要发”的好彩头;这笔费用主要用于共同平摊系统运维硬成本,不是投资顾问费,也不构成任何收益承诺。成本明细与风险边界见 docs/COST_MODEL.md

威科夫策略交流学习 知识星球二维码

飞书一群 飞书二群 QQ群 飞书个人

群号: 761348919

赞助

觉得有帮助?给个 Star。赚到钱了?请作者吃个汉堡。

支付宝 微信

License

AGPL-3.0 © 2024-2026 youngcan


Star history

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

youngcan_wyckoff_analysis-0.9.299.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

youngcan_wyckoff_analysis-0.9.299-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file youngcan_wyckoff_analysis-0.9.299.tar.gz.

File metadata

File hashes

Hashes for youngcan_wyckoff_analysis-0.9.299.tar.gz
Algorithm Hash digest
SHA256 aa880184392e68ca480c05703186a6bb5b7916e27c4e338a52f8ae55bbb6f644
MD5 1d065d666605cf911f0dc71ae9f9ea98
BLAKE2b-256 ac1ac95a42db92aac9cb0a6f8fe1461390d68c08e42087c75734bf190f1cac43

See more details on using hashes here.

Provenance

The following attestation bundles were made for youngcan_wyckoff_analysis-0.9.299.tar.gz:

Publisher: pypi_patch_release.yml on YoungCan-Wang/WyckoffTradingAgent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file youngcan_wyckoff_analysis-0.9.299-py3-none-any.whl.

File metadata

File hashes

Hashes for youngcan_wyckoff_analysis-0.9.299-py3-none-any.whl
Algorithm Hash digest
SHA256 b62d256c50d287683b8a31b0575e773f112c771aaa333c29d01c874f75ebb132
MD5 4b6f0868e547d5b352801793ac97a2e7
BLAKE2b-256 2167579317960e5c2308daded3d74a1da19abc27f5a91ef0bb677ab04c0607ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for youngcan_wyckoff_analysis-0.9.299-py3-none-any.whl:

Publisher: pypi_patch_release.yml on YoungCan-Wang/WyckoffTradingAgent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.9.360

2 files

0.9.359

2 files

0.9.358

2 files

0.9.357

2 files

0.9.356

2 files

0.9.355

2 files

0.9.354

2 files

0.9.353

2 files

0.9.352

2 files

0.9.351

2 files

0.9.350

2 files

0.9.349

2 files

0.9.348

2 files

0.9.347

2 files

0.9.346

2 files

0.9.345

2 files

0.9.344

2 files

0.9.343

2 files

0.9.342

2 files

0.9.341

2 files

0.9.340

2 files

0.9.339

2 files

0.9.338

2 files

0.9.337

2 files

0.9.336

2 files

0.9.335

2 files

0.9.334

2 files

0.9.333

2 files

0.9.332

2 files

0.9.331

2 files

0.9.330

2 files

0.9.329

2 files

0.9.328

2 files

0.9.327

2 files

0.9.326

2 files

0.9.325

2 files

0.9.324

2 files

0.9.323

2 files

0.9.322

2 files

0.9.321

2 files

0.9.320

2 files

0.9.319

2 files

0.9.318

2 files

0.9.317

2 files

0.9.316

2 files

0.9.315

2 files

0.9.314

2 files

0.9.313

2 files

0.9.312

2 files

0.9.311

2 files

0.9.310

2 files

0.9.309

2 files

0.9.308

2 files

0.9.307

2 files

0.9.306

2 files

0.9.305

2 files

0.9.304

2 files

0.9.303

2 files

0.9.302

2 files

0.9.301

2 files

0.9.300

2 files

This release

0.9.299 This release

2 files

0.9.298

2 files

0.9.297

2 files

0.9.296

2 files

0.9.295

2 files

0.9.294

2 files

0.9.293

2 files

0.9.292

2 files

0.9.291

2 files

0.9.290

2 files

0.9.289

2 files

0.9.288

2 files

0.9.287

2 files

0.9.286

2 files

0.9.285

2 files

0.9.284

2 files

0.9.283

2 files

0.9.282

2 files

0.9.281

2 files

0.9.280

2 files

0.9.279

2 files

0.9.278

2 files

0.9.277

2 files

0.9.276

2 files

0.9.275

2 files

0.9.274

2 files

0.9.273

2 files

0.9.272

2 files

0.9.271

2 files

0.9.270

2 files

0.9.269

2 files

0.9.268

2 files

0.9.267

2 files

0.9.266

2 files

0.9.265

2 files

0.9.264

2 files

0.9.263

2 files

0.9.262

2 files

0.9.261

2 files

0.9.260

2 files

0.9.259

2 files

0.9.258

2 files

0.9.257

2 files

0.9.256

2 files

0.9.255

2 files

0.9.254

2 files

0.9.253

2 files

0.9.252

2 files

0.9.251

2 files

0.9.250

2 files

0.9.249

2 files

0.9.248

2 files

0.9.247

2 files

0.9.246

2 files

0.9.245

2 files

0.9.244

2 files

0.9.243

2 files

0.9.242

2 files

0.9.241

2 files

0.9.240

2 files

0.9.239

2 files

0.9.238

2 files

0.9.237

2 files

0.9.236

2 files

0.9.235

2 files

0.9.234

2 files

0.9.233

2 files

0.9.232

2 files

0.9.231

2 files

0.9.230

2 files

0.9.229

2 files

0.9.228

2 files

0.9.227

2 files

0.9.226

2 files

0.9.225

2 files

0.9.224

2 files

0.9.223

2 files

0.9.222

2 files

0.9.221

2 files

0.9.220

2 files

0.9.219

2 files

0.9.218

2 files

0.9.217

2 files

0.9.216

2 files

0.9.215

2 files

0.9.214

2 files

0.9.213

2 files

0.9.212

2 files

0.9.211

2 files

0.9.210

2 files

0.9.209

2 files

0.9.208

2 files

0.9.207

2 files

0.9.206

2 files

0.9.205

2 files

0.9.204

2 files

0.9.203

2 files

0.9.202

2 files

0.9.201

2 files

0.9.200

2 files

0.9.199

2 files

0.9.198

2 files

0.9.197

2 files

0.9.196

2 files

0.9.195

2 files

0.9.194

2 files

0.9.193

2 files

0.9.192

2 files

0.9.191

2 files

0.9.190

2 files

0.9.189

2 files

0.9.188

2 files

0.9.187

2 files

0.9.186

2 files

0.9.185

2 files

0.9.184

2 files

0.9.183

2 files

0.9.182

2 files

0.9.181

2 files

0.9.180

2 files

0.9.179

2 files

0.9.178

2 files

0.9.177

2 files

0.9.176

2 files

0.9.175

2 files

0.9.174

2 files

0.9.173

2 files

0.9.172

2 files

0.9.171

2 files

0.9.170

2 files

0.9.169

2 files

0.9.168

2 files

0.9.167

2 files

0.9.166

2 files

0.9.165

2 files

0.9.164

2 files

0.9.163

2 files

0.9.162

2 files

0.9.161

2 files

0.9.160

2 files

0.9.159

2 files

0.9.158

2 files

0.9.157

2 files

0.9.156

2 files

0.9.155

2 files

0.9.154

2 files

0.9.153

2 files

0.9.152

2 files

0.9.151

2 files

0.9.150

2 files

0.9.149

2 files

0.9.148

2 files

0.9.147

2 files

0.9.146

2 files

0.9.145

2 files

0.9.144

2 files

0.9.143

2 files

0.9.142

2 files

0.9.141

2 files

0.9.140

2 files

0.9.139

2 files

0.9.138

2 files

0.9.137

2 files

0.9.136

2 files

0.9.135

2 files

0.9.134

2 files

0.9.133

2 files

0.9.132

2 files

0.9.131

2 files

0.9.130

2 files

0.9.129

2 files

0.9.128

2 files

0.9.127

2 files

0.9.126

2 files

0.9.125

2 files

0.9.124

2 files

0.9.123

2 files

0.9.122

2 files

0.9.121

2 files

0.9.120

2 files

0.9.119

2 files

0.9.118

2 files

0.9.117

2 files

0.9.116

2 files

0.9.115

2 files

0.9.114

2 files

0.9.113

2 files

0.9.112

2 files

0.9.111

2 files

0.9.110

2 files

0.9.109

2 files

0.9.108

2 files

0.9.107

2 files

0.9.106

2 files

0.9.105

2 files

0.9.104

2 files

0.9.102

2 files

0.9.101

2 files

0.9.100

2 files

0.9.99

2 files

0.9.98

2 files

0.9.97

2 files

0.9.96

2 files

0.9.95

2 files

0.9.94

2 files

0.9.93

2 files

0.9.92

2 files

0.9.91

2 files

0.9.90

2 files

0.9.89

2 files

0.9.88

2 files

0.9.87

2 files

0.9.86

2 files

0.9.85

2 files

0.9.84

2 files

0.9.83

2 files

0.9.82

2 files

0.9.81

2 files

0.9.80

2 files

0.9.79

2 files

0.9.78

2 files

0.9.77

2 files

0.9.76

2 files

0.9.75

2 files

0.9.74

2 files

0.9.73

2 files

0.9.72

2 files

0.9.71

2 files

0.9.70

2 files

0.9.69

2 files

0.9.68

2 files

0.9.67

2 files

0.9.66

2 files

0.9.65

2 files

0.9.64

2 files

0.9.63

2 files

0.9.62

2 files

0.9.61

2 files

0.9.60

2 files

0.9.59

2 files

0.9.58

2 files

0.9.57

2 files

0.9.56

2 files

0.9.55

2 files

0.9.54

2 files

0.9.53

2 files

0.9.52

2 files

0.9.51

2 files

0.9.50

2 files

0.9.49

2 files

0.9.48

2 files

0.9.47

2 files

0.9.46

2 files

0.9.45

2 files

0.9.44

2 files

0.9.43

2 files

0.9.42

2 files

0.9.41

2 files

0.9.40

2 files

0.9.39

2 files

0.9.38

2 files

0.9.37

2 files

0.9.36

2 files

0.9.35

2 files

0.9.34

2 files

0.9.33

2 files

0.9.32

2 files

0.9.31

2 files

0.9.30

2 files

0.9.29

2 files

0.9.28

2 files

0.9.27

2 files

0.9.26

2 files

0.9.25

2 files

0.9.24

2 files

0.9.23

2 files

0.9.22

2 files

0.9.21

2 files

0.9.20

2 files

0.9.19

2 files

0.9.18

2 files

0.9.17

2 files

0.9.16

2 files

0.9.15

2 files

0.9.14

2 files

0.9.13

2 files

0.9.12

2 files

0.9.11

2 files

0.9.10

2 files

0.9.9

2 files

0.9.8

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.4

2 files

0.8.2

2 files

0.8.0

2 files

0.7.20

2 files

0.7.19

2 files

0.7.17

2 files

0.7.16

2 files

0.7.15

2 files

0.7.14

2 files

0.7.13

2 files

0.7.12

2 files

0.7.11

2 files

0.7.10

2 files

0.7.9

2 files

0.7.8

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.13

2 files

0.6.12

2 files

0.6.11

2 files

0.6.10

2 files

0.6.8

2 files

0.6.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.8

2 files

0.5.7

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.43

2 files

0.1.42

2 files

0.1.41

2 files

0.1.40

2 files

0.1.39

2 files

0.1.38

2 files

0.1.37

2 files

0.1.36

2 files

0.1.35

2 files

0.1.34

2 files

0.1.33

2 files

0.1.32

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

2 files

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page