
Veilfile
io.github.veilfile由 GitHub 帳號 veilfile 發布v1.0.0更新於 Oct 30, 2026
Private, expiring artifact hosting for AI agents. Upload via API or MCP; links die on their own.
概覽
Veilfile 是託管的 MCP 伺服器,提供私密、會過期的產物託管:助理可上傳截圖、日誌或 HAR 檔,並取得無法猜測、到期自動失效的連結。
- 可以做什麼
- 上傳產物並取回無法猜測、具有效期限的連結
- 為不直接傳送的檔案建立預簽章上傳網址
- 列出工作區中既有的產物
- 撤銷產物,使其連結立即失效
- 上傳內容會掃描敏感資訊樣式並標記,呼叫端要求時可直接拒絕
- 適用情境
- 適合 CI 或雲端工作階段中的程式代理產出截圖、日誌包或 HAR 檔,需要私密連結供審閱,而不想放進公開儲存庫的情況。也適合把短期檔案交給人工查看,又不想讓它們長期留在網路上。
- 執行需求
- 透過 streamable HTTP 連線至 veilfile.com 的遠端端點,無需本機安裝。需要完成電子郵件驗證的帳號,並在儀表板建立 API 金鑰,以 Authorization 標頭攜帶,或使用 OAuth 權杖。有免費方案,更大額度需付費。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Veilfile,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.veilfile%2Fveilfile/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"veilfile": {
"type": "http",
"url": "https://veilfile.com/mcp/"
}
}
}README
Veilfile — private, ephemeral artifact hosting for AI agents
When a coding agent in CI or a cloud session produces a screenshot, log bundle,
or HAR file for review, it needs a private URL to put it at — not a public
repo. Veilfile is the sanctioned place: upload via API key (or MCP), get back an
unguessable, expiring URL. Uploads are scanned for secret shapes and flagged
(blocked only when the caller passes on_secret=reject; file contents are
never logged).
- API:
POST /api/v1/artifacts(multipart,Authorization: Bearer vlf_…) →{id, url, expires_at, size_bytes, secret_flags[]}.GET /a/<token>serves the file (the 256-bit token is the auth). List (bare JSON array) and revoke endpoints included. - MCP: hosted server at
POST /mcp(JSON-RPC over HTTP; toolsupload_artifact,create_upload_url,list_artifacts,revoke_artifact), authenticated with avlf_key or an OAuth token. - CLIs:
veilfileon PyPI (cli/) and npm (npm/):login(device flow),logout,status,push,pull. - Dashboard: signed-in pages at
/app/, Django views on the same shell as the rest of the site: Overview (usage vs plan caps), Files (secret-flag notes- revoke), Keys (a new key is shown once), Connected apps and Billing (plan switching and the Stripe billing portal).
- Landing page:
/(public). Agent docs:/llms.txt,docs/API.md,/docs/. - Agents working on this repo: read AGENTS.md.
See SPEC.md for the product spec.
Plans
Yearly billing costs ten months' price, so two months are free. A yearly plan has the same limits as the monthly one.
The source of truth is backend/drop_core/plans.py (PLANS, and
ANNUAL_PRICE_USD for the yearly prices; Stripe prices live in Stripe and the
STRIPE_PRICE_* variables). backend/drop_core/tests_fix_docs.py
fails when a doc or template states a different price or cap.
Quickstart (local dev)
Sign up at http://localhost:8000/accounts/signup/ (or log in), open
/app/, create an API key, then:
Environment variables
No secrets are committed to this repo. Copy the names below into a local
.env (gitignored) or your host's env config. Billing is live in
production (sk_live_..., live price IDs, Stripe Managed Payments); use a
Stripe sandbox/test key only on a local or staging copy.
Without Stripe vars, checkout/switch/portal return 503 billing_not_configured and the
dashboard shows a friendly note; everything else works.
Tests
Tests need DJANGO_DEBUG=True (the test runner refuses False) and a local
database; it also forces local storage and strips STRIPE_*/AWS_*.
CI (.github/workflows/ci.yml) runs all of the above plus
manage.py check --deploy, a production-settings collectstatic, and the
browser checks in site-tests/ (jobs site, site-cloth, site-ink, site-reading, site-phone, site-forms, site-catalog and site-dashboard; see AGENTS.md, "Site checks")
on every pull request to main (the browser checks skip a pull request that changes no page), and the backend and CLI checks on every push to it. It runs on GitHub-hosted runners, one machine for each job, with the jobs side by side (AGENTS.md, "Where CI runs").
Ops
- Deploy: Render Docker web service (serves veilfile.com), auto-deploys every commit to
mainafter its CI checks pass, with a paid Postgres.render.yamlmirrors it. The container runs as a non-root user. Boot sequence (backend/entrypoint.sh):migrate --noinput(skipped whenSKIP_MIGRATE=1),createcachetable, a background daily housekeeping loop, then gunicorn. - Health check:
GET /healthzreturns200 {"status":"ok"}after aSELECT 1, or503. Set it as the Render Health Check Path. - Daily housekeeping: the entrypoint loop runs
sweep_expired,clearsessions,cleartokens,prune_funnel_events,prune_email_ips(clears send-log IPs after 90 days) andpurge_expired_cacheonce a day. No separate cron job is needed. Uploads also trigger a small lazy sweep. - TTL sweeper:
python backend/manage.py sweep_expireddeletes expired artifacts (files + rows). Idempotent. Printsswept=N bytes=N failed=Nand exits non-zero when any storage delete failed (those rows are kept for the next run);--limit N/--time-budget SECONDSbound a run. - Orphaned files:
python backend/manage.py reconcile_storagelists stored objects with no artifact row;--deleteremoves them. Run it by hand, dry run first:--deleterefuses when the database looks wrong (empty artifact table, more than 20% orphans, or R2 storage without PostgreSQL) unless you pass--forceafter checking thedb=/storage=it prints. - Billing resync:
python backend/manage.py sync_stripe_billing(dry run;--applyto write) rebuilds workspace plans from Stripe. The Stripe setup steps are in the private ops repository. - Deploy checks:
manage.py check --deployreportsveilfile.W001-W006misconfigurations (also logged at ERROR by every worker at boot). - Local container:
docker runneedsDATABASE_URL=sqlite:////tmp/db.sqlite3together withDJANGO_ALLOW_SQLITE=True(production mode otherwise refuses SQLite);/app/backendis read-only to the non-root user. - Storage: Render's disk is ephemeral. Production must use
DROP_STORAGE=s3(Cloudflare R2). - MCP registries: launch checklist in
docs/REGISTRIES.md.
Project layout
License and contributions
The code is published so that anyone can read it and check what Veilfile does.
All rights are reserved (LICENSE), except for the command-line clients in cli/ and npm/, which
are under the MIT License. This repository does not accept pull requests from outside contributors. Issues are
welcome, and a security problem should be reported privately with "Report a vulnerability" on the
repository's Security tab.
Launch checklist
- Create Cloudflare R2 bucket + API token (S3-compatible).
- Create Stripe products/prices (Team $4, Team Plus $6, Scale $12, tax-inclusive) with product tax codes; note the price IDs.
- Deploy on Render (see
render.yaml); set env vars incl.DROP_BASE_URL,DATABASE_URLand theEMAIL_*SMTP settings; set the Health Check Path to/healthz. - Point the Stripe webhook at
https://<host>/api/v1/billing/webhook; setSTRIPE_WEBHOOK_SECRET. - Decide
VEILFILE_SAFETY_MODE(logorenforce). - List the MCP server per
docs/REGISTRIES.md.
Expired artifacts are swept daily by the entrypoint loop; no cron job is needed.
來源:README.md,提交 5a19640
工具
0版本歷史
1- v1.0.0最新Oct 29, 2026
評分
已滿足適用檢查項的 75%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。