Point your camera at a meal — honest calorie ranges, no key to paste
AI: publik API or your key

Prices are for one typical use: one request of about 1,500 words sent and 375 words back. A higher quality score is better.
Nut AI has no option to run its AI on your computer.
| Model | Quality | Per 1,000 uses |
|---|---|---|
| On your computer (Ollama, 4-bit download size) | ||
| Granite 4.2 3B2.2 GB | 9 | $0 |
| Phi-4 Mini2.5 GB | 6 | $0 |
| Llama 3.1 8B4.9 GB | 7 | $0 |
| gpt-oss 20B14 GB | 9 | $0 |
| Gemma 4 31B20 GB | 19* | $0 |
| Qwen3.5 35B-A3B24 GB | 19* | $0 |
| publik API | ||
| publik-fastGLM-5.3 Flash | 42 | $1.00 |
| publik-balancedMiMo-V2.6-Pro · Nut AI | 46 | $10.00 |
| publik-smartGPT-6 Sol | 48 | $18.00 |
Quality: Artificial Analysis Intelligence Index v4.3.2, read 2026-09-22 (publik API models 2026-09-25); * = estimated by Artificial Analysis. Sizes: the Ollama library, read 2026-09-22.
Every step written out. No terminal experience needed. Pick your setup.
An open-source AI photo calorie tracker that never shows a number it cannot justify.
Point your camera at a meal and get calories and macros — with an honest uncertainty range, the assumptions it made shown as editable chips, and a correction flow that recomputes everything locally and instantly. No subscription, no paywall, no account, no server.
Status: alpha. The full loop works on iPhone and Android — scan, review, correct, log, track. On-device inference and the published accuracy numbers are still ahead. Expect sharp edges.
Photo calorie trackers converged on a bad pattern: show one confident number, hide the uncertainty, and paywall the correction. The number is a guess — portion estimation alone carries 26–37%+ MAPE across every published model — and presenting a guess as a fact is the actual product failure.
Nut AI is built around one rule:
The inference model never owns a number the user sees.
The model is a perception device. It answers what foods are here, what form are they in, how big relative to what else is in frame, what reference objects are visible, what could I not see. Then:
Every consequence of that rule is a feature: corrections are free and offline, historical logs never silently change, and the two worst bugs in this product category become structurally impossible.
Chosen during onboarding, changeable any time, and presented neutrally:
Either way, barcode scanning, label OCR, text search, manual entry and the entire correction flow work offline with no key at all.
No paywalled shutter button. No social feed. No streak-restore purchase. No opaque "AI health score". No red numbers for missed goals — red is reserved for safety warnings, never for food or bodies.
apps/mobile/ the Expo app — the ONLY package with React Native imports
packages/ pure TypeScript, importable under plain Node:
core-schema Zod source of truth for every payload shape
gram-engine the reconciliation ladder, densities, yields, oil absorption
resolver food name → database row (FTS5 candidates + six-signal scoring)
totals recompute, macro reconciliation, rounding
confidence measured bands, structural widening, per-meal quadrature
repair the question bank and expected-value gating
goals BMR/TDEE/macros, EWMA trend, adaptive TDEE
prompt system prompt, few-shots, prompt versioning
db-adapter one interface, two impls: expo-sqlite | better-sqlite3
clamp the deterministic sanity clamp
eval/ accuracy harness — imports the real engine, runs under Node
packages/* must stay React-Native-free. This is enforced by npm run check:node-purity, which
both scans for forbidden imports and actually imports every package under bare Node. It is not a style
rule: the accuracy harness has to run the real gram engine and resolver against the golden set. If
those become RN-only, the harness can only score raw model output — which measures the wrong thing,
because most of the accuracy lives between the model and the number.
Requires Node ≥ 20.19.
npm install
npm run check # lint + typecheck + tests + node-purity
Expo Go is not a supported development mode. The camera, SQLite, Keychain key storage, HealthKit,
and file export/import all require a compiled app — build with Xcode or expo run:android as shown
above.
Application code is AGPL-3.0-or-later, with a GNU AGPL §7 additional permission allowing
distribution through app stores — see LICENSE. Without that grant, App Store distribution
would conflict with the AGPL.
The bundled nutrition database is a separate work under separate terms (CC0, ODbL, CC BY 4.0, OGL
v3.0 depending on the source) — see THIRD-PARTY-DATA.md. Data licenses and code licenses are legally
independent; neither discharges the other.
Nut AI's estimates are AI-generated approximations and may not be accurate. Nut AI is not a medical device and does not diagnose, treat, cure, or prevent any medical condition. It is not a substitute for professional nutritional or medical guidance — consult a registered dietitian or healthcare provider for personalized advice.