Section 11 — Open Protocol for AI Endurance Coaching (ChatGPT, Claude, Grok, Mistral)

Yes that was it. OpenClaw already wanted to Build its own Version of api access with the the fixed workout_doc: {}, but now with 0.4 its working

1 Like

Section 11 update (2026-04-26)

This batch covers sync.py v3.104→v3.108, SECTION_11.md v11.35→v11.39, and push.py v0.4→v0.5.

Highlights:

Completed-activity terrain/weather is now in latest.json for outdoor activities: course character, elevation density, grade distribution, wind/headwind exposure, feels-like temp, rain, and units.

Outdoor context added to post-workout reports — a concise optional line summarizing route + conditions, and whether variability/headwind/thermal/wet conditions actually explain the ride.

Effort response added: session IF vs logged RPE now classifies as positive / neutral / negative / null, with IF and Effort response rendered in post-workout reports.

DFA/interval hygiene: has_intervals now requires a WORK segment, so recovery-only placeholder intervals no longer trigger false structured-session handling.

Fetch reliability: sync.py v3.108 now distinguishes real no-data cases from transient API/network failures for intervals, streams, and terrain. Transients retry instead of being cached as truth.

Aggregate durability alerts now have a sample-size gate, so low-N 28d means stay visible but no longer fire alarms as if statistically reliable.

Also in this release:

• push.py v0.4 fixes Garmin/Tacx/Zwift workout sync by no longer sending empty workout_doc.

• push.py v0.5 adds clearer credential/request error handling.

• Report examples/templates got a formatting cleanup: 2-decimal distance, fuller zone distributions, and less noisy decoupling labels.

• New pull.py read-only helper for agentic/local setups: fetch raw activity streams (trace) on demand for deeper inspection.

I’ve found this to be a really useful tool when it works but am having real trouble getting that to be consistent.

I’m running it in a web-chat format and have Gemini Plus, and ChatGPT GO so they’ve been my preferred models.
It seems like they ChatGPT loses the connection to my Github and I have to reset everything for it to link up and even then it’s tempermental.
Similar story with Gemini but that just seems to reference random/non-existent data and workouts.

Does anyone have any tips on how to get either of these working more reliably?

The most reliable fix is to run it agentic: it can read local files or directly from the repo.

OpenClaw is the practical path, though there are other ways to do it. Claude and ChatGPT both work well in that setup. More and more open-weight models show great potential, too, but I don’t find them consistently reliable yet for coaching.

Telegram as the interface. If you don’t have local hardware, a small VPS is enough. First-time setup takes a bit, but it’s worth it.

Just started trying this out and it looks like an amazing piece of work. Gemini does seem to be hallucinating though in one workout I’m looking at. It is convinced that my max HR was 161bpm even though both intervals.icu and the latest.json file both give it as 138bpm. Is there any way to tell it to avoid that error

Just checking in to say how much I’ve enjoyed Section 11 and thank you for your efforts. I used it as a back end to my own personalized training app and it’s been reliable for a couple of months now. Really appreciate what you’ve done and it’s working great!

4 Likes

Coros currently supports MCP. Could you consider adding it?

What would it give us that we don’t already get through Intervals.icu?

Right now, the project is built around Intervals as the normalized data layer. That keeps the pipeline simpler, device-agnostic, easier to test, and easier to maintain.

1 Like

Hello guys,
just one question.
Section 11 is not allowed to use data from the internet or somewhere else. It should only focus on the plain data from the sources and from the athlete itself - which absolutely makes sense for analyzing the athlete‘s status and to plan accordingly.
I somehow find it limiting, because I use this agent for more than only planning and status monitoring. Sometimes, I want to enrich my athlete data with some context where I absolutely want to the AI to research something.
Have you experienced the same?
My objective is to to teach section 11 agent somehow to only search the web when I am explicitely asking it to do so. On the other hand, I am a bit afraid that it messes up some things and that my data is corrupted by web data in the memory and contect of specific chats.
Any tips, any advise? How are you thinking about this?

Intersting project.
Why is the data retrieval from intervals.icu not handled with an MCP? The steps listed under " 2. Set Up Your Data Sync" seem a bit complicated when one could just use an MCP like this one: GitHub - eoinoconn/intervals-mcp-server: Model Context Protocol (MCP) server for connecting Claude and ChatGPT with the Intervals.icu API. · GitHub
Am I missing something?

Good question. Section 11 does not just need Intervals.icu data access — it needs deterministic, versioned preprocessing.

Some existing Intervals MCP servers are useful API bridges, but Section 11 needs a coaching layer on top: computed outputs, athlete dossier context, etc. Those are currently generated by sync.py into JSON files, so different AI clients see the same numbers and issues can be debugged/audited.

MCP is possible for Section 11, but there are different paths. A hosted MCP service could make onboarding much simpler for users, but then someone has to run and maintain the backend. A self-hosted MCP avoids that, but would mostly sit on top of the current sync/JSON setup or something similar, so it adds an interface layer without removing much complexity. MCP may well be the right future path, but not as a generic Intervals MCP alone.

The MCP standard is still evolving, so a self-hosted MCP may fit Section 11 better later on. If a user is already willing to run a more complex local setup, the bigger win is currently an agentic path rather than MCP alone: a local/always-on assistant can manage sync, reports, reminders, and write-actions directly.

Independence is also part of the project philosophy: Section 11 should remain usable and forkable even if no hosted service exists, so the core protocol and deterministic sync path need to stay open and self-contained.

1 Like

Hello,
it’s me again.

I am using the section 11 protocol heavily with an agentic approach.
While the analysis of health snapshop, readiness metrics, current fitness status and Training Load works like a charm, there are more and more questions popping up with respect to training plan and workout planning.

I am using section 11 not only as a status and readiness protocol but also as a Coach to plan my weeks and steer my progress.
Here I find some open topics which I would like to address:

  1. Section 11 loses the history of workouts and their intervals after 7 days. This is far than ideal. One example: I have performed a VO2 Max Activitity 4x4min with a specific interval power. I am doing the same workout again the week after. Section 11 would not know anymore how the workout was structured from a power POV in detail and also cannot maintain the progression correctly.

The reason is obvious: As far as I know (but correct me), the intervals and session details are not stored anywhere and kept.
This is a big problem. I tried solving this by creating a progression_audit.md where all intervals of a specific workout type are stored. This cant be the ideal solution.

→ Section 11 sets clear progression pathways, but the pathways cannot be applied correctly by the AI coach in my opinion.

  1. I am not storing clear workout week structures in the DOSSIER, as I want the AI Coach to set up my week accordingly based on all the data it has. It would be counterintuitive to give it a concrete week plan how I train and what I train on which day because then I would not need a training plan coach.
    How is this intended to work and be used?

  2. Recovery Index:
    VO₂max Sessions:

  • Prioritize power progression, not duration

  • Increase target power by +2–3% (≤ +5 W) once full set compliance maintained with consistent recovery (HR rise between reps < 10 bpm)

  • Extend total sets only when power targets sustainable and RI ≥ 0.85 for ≥ 3 consecutive workouts

  • Cap total weekly VO₂max time at ≤ 45 min

-> What is meant by consecutive workouts? Any workout performed? A specific workout of the same type? Any activity? This make a huge, huge difference. Should a day with a Recovery Ride be considered the same from an RI standpoint than a VO2 Max Session in a HIT Block?

  1. I in general have the feeling that my AI Coach (Claude Code) is not considering the right information out of Section11 to do things. When planning workouts, it ignores parts out of section11, does not scan the workout reference or simply only looks at the DOSSIER. Sometimes, it looks into the memory or CLAUDE.md. I haven’t changed anything on the structure of the documents or the project or the instructions. Do you face the same issues?
  2. If I e.g. plan a VO2 4x4 session, the AI coach scans the workout reference and suggests Z5 Power for the 4min ON, which could be something between 330-380W. This is such a big span. How should a progression work (with 2-3w ±) when the range is alrady 40w? What do you guys do and settle anywhere in the project to get clear baseline watts in %? Did you edit all workouts in workout reference? Did you add it to your DOSSIER (which I don’t want to do, I want the agent to set up correct workouts with a clear objective and not 40w+).

So happy if some of those points could be answered. I don’t want to build invidiual solutions for these topics in the best case.

Small correction: intervals.json keeps interval detail for 14 days, not 7.

But Section 11 is not meant to maintain a separate progression database for every workout type. Completed and planned workouts already live in Intervals.icu. In an agentic setup, the AI can query the relevant prior workout when needed.

Weekly planning is already defined in Section 11 B: 2 structured sessions, 1 long Z2, remaining Z1–Z2, selected from phase/readiness/load/goals and the Workout Reference.

“3 consecutive workouts” could be clarified to “3 consecutive relevant VO₂max sessions.” Recovery rides should neither count nor reset it.

Z5 is intentionally broad. The AI should choose a sensible target inside the range based on the athlete’s recent completed sessions, readiness, and objective — not edit every template or hardcode watts everywhere.

If Claude Code ignores something, you may need explicit local instructions, e.g. in a CLAUDE.md file, similar to the instruction block in the root README for non-agentic users

Thanks for your feedback, appreciate it!
I would need to give instructions to my agent to look at the workouts in intervals.icu previously performed then and gather the data from there.
So every time I would plan a new week, the agent would need to look at the workouts it would like to add, then check if previous workouts of the same type have been performed and if yes, collect the last power intervals and use it.
So this would need to go into the CLAUDE.md as I understand because this approach is not clear to the agent by default, I guess?

  • RI is not stored within the workouts as I know but are calculated on a specific day. So the agent would need to look up the days where the same workout has been performed and check the Recovery Index on these days. Quite complicated.

What I did was that I created a progression.md which stores for every workout type the progression path. I think this is not the ideal solution but easier than teaching the agent where to look at in which situation.

Another question: How does the AI Coach remember in which phase/week of the block we are if not via chat history? Is this stored somewhere?

Always looking for other solutions or input.

Finally installed the scripts locally and use section 11 via Antigravity CLI on Ubuntu. Works like a charm and keeps the context. If I manage to set this up everybody can (and for Gemini it’s so much better compared to the web interface).

1 Like

Update: I managed to install section-11 on my android device using Termux + Antigravity. Needed a detour via a Debian Subsystem. Works like a charm. Since my phone is always with me, my ‘coach’ (advisor) is as well.

I’m having an issue with ChatGPT accessing latest.json and history.json.

In Claude, both files work perfectly without any problems. However, in ChatGPT, I keep getting an error saying the files cannot be accessed.

I already connected GitHub properly inside ChatGPT, and I also carefully updated the instructions/configuration exactly as required.

Does anyone know what could be causing this issue? Could it be related to GitHub permissions, raw file access, or the way ChatGPT handles external JSON fetching?

I have the same problem with Gemini!