尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證An agent for hire: quotes each coding job, books the right NVIDIA Nemotron model on Nebius Token Factory, and proves the cost with a receipt.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Hire a coding agent with a budget. It quotes the job, books the right NVIDIA Nemotron model on Nebius Token Factory for each step, does the work, and hands you a receipt that matches the bill.
Try it live: Hire the agent · Nebius x NVIDIA Global AI Hackathon (Coding and Agentic Engineering) · MIT
| Step | What happens | Model |
|---|---|---|
| SEARCH | Upgrade jobs only: finds today's release notes on the web | none, one Tavily search |
| EXTRACT | Upgrade jobs only: pulls the notes' text, passed to PLAN and WRITE as data | none, one Tavily extract |
| QUOTE | prices the job before any call | none, slash-tokens counts the tokens |
| PLAN | reads the project and writes a short plan | Nemotron 3 Ultra, reasoning on |
| WRITE | writes the change and a test that proves it | the smallest Nemotron the job allows (e.g. Super), reasoning off |
| TEST | runs the project's own tests on a copy | none |
| ITERATE | sends any failures back and writes again, up to 3 rounds, inside the budget | as WRITE |
| RECEIPT | what Token Factory billed, what the models asked for would have cost, what you saved, and Tavily's credits | none |
One budget covers the whole job. Your project is never changed: the agent works on a copy.
Hire the agent: pick one of four jobs on a small shop, set a budget of 1 to 5 cents, click Hire, and watch each step live. Every run is a real job on Token Factory.
Watch the 2-minute video: a narrated walk-through of a live run.
A live run on the demo (2026-10-14):
HIRED Add: every item needs a quantity of at least 1 · budget 3¢
PLAN nemotron-3-ultra billed $0.002303
WRITE asked for nemotron-3-ultra, booked nemotron-3-super billed $0.001270
TEST pass, round 1
RECEIPT spent $0.003573 · on the models asked for $0.006536 · saved $0.002963 · billed more than quoted: no
The demo runs preset jobs only (no free text), one job at a time, with a daily cap of $0.50 and 50 Upgrade runs a day. Each job type has its own colour: how the colours were chosen.
bun install
export NEBIUS_API_KEY=... # a Token Factory key
bun run demo # hires the agent for one job on examples/cart
export TAVILY_API_KEY=... # for the Upgrade job
bun run demo -- --upgrade # Zod 3 → Zod 4 on examples/checkout
In code:
import { runJob } from './src'
const r = await runJob({ projectDir: './my-project', task: 'Add input validation to parse()', budget: 0.05 })
r.done // the tests pass
r.session // { spent, baseline, saved, fee, remaining, underReported }
One step on its own, with slash-tokens:
import { hire } from 'slash-tokens'
import { nebius } from './src'
const agent = hire({ budget: 0.05, floor: 2 }) // 5 cents; nothing below a mid-tier model
const { decision, output, receipt } = await agent.run({
input: 'Write a unit test for an empty-slot case.',
model: 'nemotron-3-ultra',
maxOutputTokens: 800,
call: nebius(), // each call is capped at its own quote
})
decision.action // 'downgrade': nemotron-3-super does it for less
receipt.saved // dollars saved against Ultra
chat_template_kwargs.enable_thinking), and reasoning is billed as output. On to plan, off to write.max_tokens from its own quote, so the bill can't run past it.usage Token Factory returns; the receipt flags any call billed more than quoted.Retry-After or backoff.You don't need slash-agent to try any of this.
Token Factory + Nemotron. The API is OpenAI-compatible, so a plain request works:
curl https://api.tokenfactory.nebius.com/v1/chat/completions \
-H "Authorization: Bearer $NEBIUS_API_KEY" -H "Content-Type: application/json" \
-d '{"model": "nvidia/nemotron-3-super-120b-a12b",
"messages": [{"role": "user", "content": "Reply with one word: ready"}],
"max_tokens": 20,
"chat_template_kwargs": {"enable_thinking": false}}'
enable_thinking: false turns it off; the reply's usage then shows reasoning_tokens: 0.usage is on every reply. Compare it with your invoice to check each call.nvidia/Nemotron-3-Ultra-550b-a55b, nvidia/nemotron-3-super-120b-a12b, nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B, nvidia/Nemotron-3_5-Lightning. To count tokens before a call, use NVIDIA's tokenizer from Hugging Face. Expect about 16 extra tokens of framing on a one-message request.Tavily. Search first, then extract the best result:
curl https://api.tavily.com/search -H "Authorization: Bearer $TAVILY_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "Zod 4 migration guide breaking changes", "search_depth": "basic", "max_results": 3, "include_domains": ["zod.dev"], "include_usage": true}'
curl https://api.tavily.com/extract -H "Authorization: Bearer $TAVILY_API_KEY" -H "Content-Type: application/json" \
-d '{"urls": ["<a url from the search>"], "extract_depth": "basic", "include_usage": true}'
An extract response reports 0 credits; Tavily's team confirmed that is expected. Your account's /usage endpoint shows real usage, after a short delay.
An upgrade needs today's release notes, not a model's memory. Upgrade: move the checkout from Zod 3 to Zod 4 works on examples/checkout, where validateCart() uses Zod 3 and tests pin its error messages. Zod 4 breaks it twice: error.errors is gone, and required_error / invalid_type_error are silently dropped, so the messages change.
Zod 4 migration guide breaking changes on zod.dev, finds the official migration guide..errors dropped in Zod 4, use .issues").bun install --ignore-scripts on the copy first. The agent may change versions of the packages already there, never add one./extract. Real usage is on their account /usage endpoint, after a short delay.The query comes from the preset job, never from a visitor. If the search finds nothing, the job stops before any model call. In our live runs with this setup (2026-10-14) it passed 4 of 5, one of them after an ITERATE round, for $0.007 to $0.020 on the models plus 1 Tavily credit a run. The miss ran out of rounds with the tests still failing, and its receipt said so.
web/ is the page: one Bun server, no AI calls of its own beyond the agent's. It deploys from this repository's main to Cloud Run with no stored GitHub secret (Workload Identity Federation trusts only this repository's main). The Token Factory and Tavily keys are Secret Manager secrets only the app can read. A Cloud Storage counter enforces the daily cap; an uptime check watches /health.
Everything is in this repository: what runs (web/Dockerfile), how it deploys (.github/workflows/deploy.yml), and the one-time Google Cloud setup (deploy/gcp-setup.sh: project, budget alert, registry, keyless login, least-privilege identities, the key in Secret Manager, the spend counter).
Built small on purpose. Each piece has a clear next step at scale:
| Today | At scale |
|---|---|
| Four preset jobs on two sample projects | Jobs on a team's own repositories, opened from issues or merge requests |
| Tests on an isolated copy in the container | Token Factory Sandboxes for every run: isolated microVMs, checkpoint and branch to try fixes in parallel |
| One job at a time (up to 3 visitors wait in line), one instance | A queue (Cloud Tasks) feeding many workers |
| A daily cap in a Cloud Storage file | Budgets per team and per project in a transactional store, with alerts |
| One budget and one floor per job | Policies per team: which models, which quality floor, how much a month |
| Receipts on the page | Receipts exported to BigQuery: spend and savings per team, per model, per month |
A gcloud setup script | Terraform or Google's Infrastructure Manager, with staging and production projects |
This repository was created on 2026-10-10. Everything in it is new work for the hackathon. It builds on one existing open-source package:
| Baseline (before this repo) | Measured by | |
|---|---|---|
| Engine | slash-tokens 1.6.5 (2026-08-25, the last version before the hackathon opened): per-call token estimates and same-provider routing | npm, version 1.6.5 |
| Agent loop | none, it was a library you call | — |
| Nemotron | not supported | — |
Since then:
quote(), decide(), reconcile() and hire().run(); the four Nemotron models with exact prices, context windows and IDs; request framing measured on real Token Factory bills; each call capped at its own quote.We built slash-agent on Token Factory from Oct 10 to Oct 29: a coding agent that quotes each job, books the right Nemotron model for each step, and reconciles every call against what Token Factory bills. Here's what we found, with what would help.
fetch to /v1/chat/completions; no SDK needed.usage, including prompt_cache_hit_tokens, so we could reconcile each call to the bill. Our receipts never came in under the bill across our test runs.Retry-After, so polite retries were easy.Reasoning is on by default, and billed as output. Nemotron reasons before answering unless chat_template_kwargs: {enable_thinking: false} (or reasoning_effort: "none") is sent. Reasoning tokens are billed as output, so a short task can cost several times what the visible answer suggests. Suggestion: make the default explicit in the model card and the quickstart, and show reasoning tokens as a separate line in the usage dashboard.
Model IDs follow different patterns. The four Nemotron IDs we used are nvidia/Nemotron-3-Ultra-550b-a55b, nvidia/nemotron-3-super-120b-a12b, nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B and nvidia/Nemotron-3_5-Lightning: different casing, a repeated NVIDIA- prefix on one, and an underscore for "3.5" on another. We hard-coded each one after checking. Suggestion: one naming scheme, or short stable aliases (nemotron-3-super) alongside the full IDs.
Hidden request framing tokens. Billed input is higher than the message content: we measured 16 tokens for a one-message request, plus about 7 per extra message, on real bills (Nemotron 3.5 Lightning and 3 Nano). Our first quotes counted content only and came in under the bill (12 quoted, 23 billed). Suggestion: document the chat template's framing cost per model, or offer a token-count endpoint that returns exactly what will be billed.
Counting tokens before a call. To quote a job we count tokens locally with NVIDIA's own tokenizer from Hugging Face (all four Nemotron models share it). Suggestion: link the exact tokenizer revision from each model card, so tools can count the same way Token Factory bills.
Sandboxes are what agents need; access is gated. Isolated microVMs with checkpoint and branch fit a coding agent's test-and-retry loop exactly. Access is a beta request form, so we built and shipped with tests running in our own container while we wait. Suggestion: open Sandboxes to hackathon entrants by default, or make the beta form part of hackathon onboarding.
Three sign-ups to get started. Joining took three separate steps: a Devpost account, a Nebius Token Factory account, and then the hackathon registration that links the two (and unlocks the credits). It's one-time, but it's the first thing every entrant meets. Suggestion: one flow, where registering on Devpost creates or links the Token Factory account and applies the credits in the same step.
Usage dashboard precision. At hackathon scale every line reads "< $0.01" in the default rounded view. default to full precision when totals are small, so builders can see per-model costs from day one.
We used Token Factory only, not AI Cloud's compute, so we have no AI Cloud feedback to give.
bun test # offline (stub replies and a stub Tavily, real bun test on a temp copy)
NEBIUS_LIVE=1 bun test # plus one real Token Factory call
MIT. See LICENSE.