a13n
AI 에이전트를 만들고 클라우드에서 실행합니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Catch the code that inflates your LLM bill, before it ships. Cost checks for AI agent code, on every pull request.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Catch the code that inflates your LLM bill, before it ships.
spendlint reads your agent code and points at the patterns that quietly multiply token spend: prompts that never hit the cache, system prompts that change on every call, agent loops with no limit, retries that never stop, and cost reports that miss cached tokens. It works on Python and TypeScript/JavaScript, installs in seconds, and has no dependencies.
On a pull request it only speaks up about the lines that pull request adds, right where you review them. Your code never leaves your machine or your CI runner.
Built by Vernia. Free while we are in early access.
Add .github/workflows/spendlint.yml:
name: spendlint
on: pull_request
permissions:
contents: read
jobs:
spendlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: vernialabs/spendlint@v0
Findings show up as annotations on the changed lines, with a summary on the run page. Every option (rule selection, confidence threshold, failing the build, SARIF for code scanning) is in docs/ACTION.md, and there is a complete example workflow.
pip install spendlint
spendlint . # scan a project
spendlint . --diff pr.patch --fail-on warning # only lines a diff adds; exit 1 on warnings
spendlint . --format sarif --out spendlint.sarif
Configuration, exit codes and inline ignores are in docs/USAGE.md.
| Rule | What it flags | Severity |
|---|---|---|
R-ACCT-001 | Cost computed from token counts that ignore cached-token fields | warning |
R-CACHE-001 | Anthropic requests with no prompt caching anywhere in the repo | warning |
R-CACHE-003 | A timestamp, uuid or path inside the system prompt, which breaks the cache | warning |
R-LOOP-001 | Agent loop around an LLM call with no step limit | warning |
R-LOOP-002 | Retry on an LLM call with no stop condition | warning |
R-CTX-008 | Pretty-printed JSON sent in a prompt | info |
R-CALL-004 | Embeddings requested one item at a time inside a loop | info |
R-MEDIA-001 | Image detail hard-coded to high | info |
R-OUT-001 | Chat completion with no output token cap | info |
R-MODEL-001 | Frontier model hard-coded for a cheap sub-task | info |
Every rule comes from a real cost bug that an open-source agent team found and fixed. spendlint reads code, not invoices, so treat each finding as a pointer worth a second look in review.
spendlint is the first product from Vernia. Next up are Vernia Reason, a reasoning harness that reviews pull requests with the context of the whole repository, and Vernia Ledger, an agent that connects to your providers and billing to tie every dollar to a feature and a customer. Want early access? Write to [email protected].
spendlint keeps anonymous usage counts so we can see which rules help and where they get in the way. Here is exactly what that means:
spendlint telemetry show, and Vernia's collector
at t.vernia.in, which stores only these counts (not your IP address). Its source is in
collector/. Set SPENDLINT_TELEMETRY_URL=none
to keep everything local.SPENDLINT_TELEMETRY=on or the Action's telemetry: on input.spendlint telemetry off, SPENDLINT_TELEMETRY=off, or DO_NOT_TRACK=1.The full schema is in docs/telemetry.md. A paid plan with telemetry fully disabled is on the way for teams that need it.
spendlint is source-available under the PolyForm Small Business License 1.0.0. It is free for individuals and for companies with fewer than 100 people and under US$1 million in annual revenue (the license has the exact terms). Larger organisations need a commercial license; see COMMERCIAL.md.
See CONTRIBUTING.md. Run the tests with:
python -m spendlint.test_rules && python -m spendlint.test_cli && python -m spendlint.test_telemetry