Sorry about the omission. The file format would have been a good thing to highlight when posting to the PTA forum!
In the browser, you can see the files in Settings > Files
In the CLI:
โ tree
.
โโโ burns
โ โโโ 2026.chow
โโโ entries
โ โโโ 2026.chow
โโโ foods.chow
โโโ main.chow
โโโ metrics
โ โโโ 2016.chow
โ โโโ 2017.chow
โ โโโ 2018.chow
โ โโโ 2019.chow
โ โโโ 2020.chow
โ โโโ 2021.chow
โ โโโ 2022.chow
โ โโโ 2023.chow
โ โโโ 2024.chow
โ โโโ 2025.chow
โ โโโ 2026.chow
โโโ recipes
โ โโโ 2026.chow
โโโ targets
โโโ 2026.chow
There are food definitions, food entries (actual consumption of food), recipes (groups of foods so you don't log the same 7 salad ingredients over and over), targets (e.g. nutritional goals e.g. 1800 kcal, macronutrients), metrics (e.g. weight measurements), and burns (e.g. exercise)
Excerpt from today from entries/2026.chow:
2026-10-01 08:14 mfp/62817990135085 1 x 1 teaspoon ; id:715VDA6BSF
2026-10-01 11:51 homechef/EOdxZJOG 1 x 1 serving ; id:BGAAR1JRGB
2026-10-01 11:52 mfp/28183369641261-132362180312125 1 x 1 cup skim milk ; id:KDKCJ8DKB0
2026-10-01 16:00 off/04971502 355 x 1 g ; id:6Z12Q6ENBH
2026-10-01 19:11 homechef/GqyeKDqB 1 x 1 serving ; id:V6C78E38TX
2026-10-01 19:12 fdc/169225 160 x 1 g ; id:9MAR1R6PYA
Excerpt from foods.chow:
food off/0850397004071 "That's it. 1 Apple + 1 Mango Fruit Bar" ; brand:"That's it"
35 g = 100 kcal 27 carb 23 sugar 3 fiber 25 sodium 165 potassium
11 calcium 1 iron 15 vit_c
100 g = 285.71 kcal 77.14 carb 65.71 sugar 8.57 fiber 71.43 sodium
471.43 potassium 31.43 calcium 2.86 iron 42.86 vit_c
food mfp/101455336819965 "Greek Plain Nonfat Yogurt" ; basis:rdi1993 brand:Kroger verified:yes
0.67 cup = 100 kcal 7 carb 17 protein 7 sugar 7 netcarb 60 sodium
10 cholesterol 220 potassium 19% calcium
food homechef/GqyeKDqB "Deconstructed Pork Bรกnh Mรฌ Bowl" ; url:https://www.homechef.com/meals/deconstructed-pork-banh-mi-bowl-standard
1 serving = 570 kcal 54 carb 17 fat 44 protein 19 sugar 6 fiber 5 satfat
11 addedsugar 0 transfat 1420 sodium 110 cholesterol 590 potassium
100 calcium 2.1 iron 0 vit_d
614 g = 570 kcal 54 carb 17 fat 44 protein 19 sugar 6 fiber 5 satfat
11 addedsugar 0 transfat 1420 sodium 110 cholesterol 590 potassium
100 calcium 2.1 iron 0 vit_d
food fdc/169225 "Cucumber, peeled, raw"
100 g = 10 kcal 2.16 carb 0.16 fat 0.59 protein
Full grammar:
diary = { line } ;
line = blank | comment | include | food_block | entry | target
| burn | reading | container | recipe_block ;
container = "container" ws container_id ws name ws number ws weight_unit
[ trail ] newline ;
recipe_block = date ws "recipe" ws localid ws name [ trail ] newline
{ recipe_line } ; (* at least one ingredient *)
recipe_line = ws ( "container" ws container_id
| "weight" ws number ws weight_unit
| "servings" ws number
| food_id ws number ws "x" ws serving ) [ trail ] newline ;
container_id = idchar { idchar } ;
weight_unit = unit ; (* one that folds to g, kg, mg, oz or lb *)
comment = ws? ";" text newline ;
include = "include" ws path [ trail ] newline ;
food_block = food_header serving_line { serving_line } ; (* at least one serving *)
food_header = "food" ws food_id ws name [ ws ";" ws tags ] newline ;
serving_line = ws serving ws "=" [ ws nutrients ] [ trail ] newline
{ continuation } ;
continuation = ws nutrients [ trail ] newline ; (* no "=" *)
entry = date ws time ws food_id ws number ws "x" ws serving
[ trail ] newline ;
target = date ws "target" ws nutrients [ trail ] newline
{ continuation } ;
burn = date ws "burn" ws time ws number ws "kcal" ws name
[ trail ] newline ;
reading = date ws "metric" ws time ws metric_id ws number ws metric_unit
[ trail ] newline ;
metric_id = idchar { idchar } ;
metric_unit = char { char } ; (* no whitespace *)
food_id = [ backend "/" ] localid ; (* bare id means local *)
backend = idchar { idchar } ; (* fdc, off, mfp, homechef, local, or any other *)
localid = idchar { idchar } ;
idchar = letter | digit | "_" | "-" ;
name = '"' { char - '"' } '"' ;
tags = tag { ws tag } ;
tag = key ":" ( bareword | '"' { char - '"' } '"' ) ;
serving = number ws unit ; (* "170 g", "1 medium onion" *)
unit = word { ws word } ;
nutrients = nutrient { ws nutrient } ;
nutrient = ( number | number "%" ) ws nutrient_id ; (* "150 kcal", "15% iron" *)
nutrient_id = idchar { idchar } ;
date = digit digit digit digit "-" digit digit "-" digit digit ;
time = digit digit ":" digit digit ; (* 24-hour, HH:MM, local *)
number = digit { digit } [ "." digit { digit } ] ; (* never negative *)
trail = ws? ";" text ;
I'll prioritize publishing documentation and the CLI.