StewardAI

Eunice · StewardAI

· 6 min read

openGym: An Indie Hacker Gym App Built With Claude Code

openGym is an indie hacker gym app — a free, self-hosted workout tracker built largely with Claude Code, AGPL-licensed, no paid tier, trending on GitHub.

GitHub avatar of Duarte Santos, the Swiss developer who built openGym with Claude Code

A software developer still in training in Switzerland put a gym-tracking app on GitHub in July. Today it's sitting on GitHub's daily trending page with 4,201 stars total and 1,433 gained in the last 24 hours alone (as of this writing — trending-page counts move in real time) — on a repo that, per its own README, is developed largely in Claude Code sessions.

The project is openGym, a free, self-hosted workout and body-weight tracker — a textbook indie hacker gym app, built solo and shipped in public. What makes it worth a closer look isn't the star count by itself — it's that the maintainer has published, in plain files sitting in the repo, exactly how an AI coding agent fits into a real shipping process: what it's trusted to draft, what a human checks anyway, and where the project still has rough edges.

What openGym actually does

The pitch, from its own GitHub description, is a workout planner and logger you run on your own server instead of a company's: plan routines, log sessions with supersets and warm-ups, see which muscles are trained or still fatigued, and import existing history from FitNotes, Strong, or Hevy.

The README backs that up with specifics rather than adjectives: a routine builder sitting on top of a library of 1,324 exercises with animated demos, estimated-1RM tracking, passkey login (Face ID, Touch ID, fingerprint), and 17 languages, including right-to-left Arabic. It ships as two Docker containers plus a folder of your own data, documented in docs/SELF_HOSTING.md, with reverse-proxy recipes for Cloudflare Tunnel, Caddy, Traefik, and Kubernetes.

There's also an optional AI Coach that drafts a week of routines and suggests changes based on logged history — but per the README, "the app itself doesn't need an LLM. Nothing in a default install calls an AI service," and the coach only runs if you supply your own API key for Anthropic, OpenAI, Gemini, or a local Ollama endpoint.

From v1.0.0 to GitHub's trending page in under three months

The CHANGELOG dates v1.0.0, "first public release," to July 20, 2026. From there it's a steady weekly cadence: custom exercises and 12 languages landed in v1.1.2 two days later, then an admin dashboard for self-hosters in v1.1.3. The AI Coach shipped in v1.3.0 on September 3, and the most recent tagged release, v1.3.9 on September 28, added history editing plus "thirty-nine community pull requests" worth of fixes, per its own release notes.

Eleven weeks after that first tag, the repo shows 653 forks and 1,197 commits on the main branch, with 68 open issues and 65 open pull requests against 102 already closed or merged, per the repo page and its pull request list — a live backlog, not a star count sitting on a dormant repo.

The person behind it isn't a funded team

There's no company behind this. Duarte Santos's GitHub profile describes him as a software developer in training at Sunrise UPC in Switzerland, with 65 followers and openGym as his one pinned project with real traction — the rest of his pinned repos are small utilities and a portfolio site. That's a meaningfully different starting point than ECC, which went from a sponsored hackathon to 253,000 stars, or ai-memory, built by a developer with 20.6k existing followers and an agency behind him.

The commit history shows every commit on main authored by his single account — consistent with the README's claim that "a person decides and ships. What goes in, what gets reviewed and merged, and every release are the maintainer's call." The 102 closed pull requests, with contributor usernames like melduarmir, danifuuu, and sgoendoer visible on the PR list, show outside help exists — it's just gated through one reviewer before anything ships.

What makes this an indie hacker gym app, not just another one

openGym avoids the vaguest version of the "built with AI" claim by writing its rules down. The repo root contains a CLAUDE.md file — context the maintainer hands to Claude Code at the start of a session — and it reads less like marketing and more like an engineering constraints document: "Dependency-light is a hard constraint, not a preference. Frontend: React + Router + Zustand and nothing else," and anything that "decides what you lift next, or reads a logged session back" must ship as a pure helper function with a test sitting next to it.

The same file is candid about what it deliberately skips: "There is no linter/formatter configured (no ESLint/Prettier config in the repo) and no TypeScript — match the existing style by hand." That's an unusual thing to admit in a project built partly by an AI agent, which is exactly the kind of tool that's good at enforcing style automatically.

The CONTRIBUTING.md extends the same logic to outside contributors: "You're welcome to use whatever tools you like for a pull request." The project doesn't care whether a PR came from Claude Code, Cursor, or a plain text editor — "the bar is the same either way: you understand the change, it's tested, and you can answer questions about it in review."

Built for agents on the other end, too

Buried in the repo tree is an mcp/ directory — a Model Context Protocol server, documented in its own README, that lets a tool like Claude Desktop read a self-hosted openGym instance's data directly: routines, workout history, estimated 1RM, muscle balance. It's explicitly read-only in its current phase, reuses the same training-logic code the web app's Stats screen runs so the two can't disagree, and needs no network access or secrets beyond filesystem access to the same ./data folder Docker Compose already manages. It's a small detail, but it signals a builder thinking about AI agents as a consumer of his product, not just a tool he used to write it.

What doesn't fit the highlight reel

A few things keep this from being a clean story. The project's own NOTICE.md flags that the exercise images and animations have disputed upstream ownership between two third-party sources, and until that's resolved, the file says plainly: "until then, treat the media as third-party content licensed to neither openGym nor to you." That's an honest flag on a real legal gray area most projects would just quietly ignore.

There's also no monetization anywhere in sight. The README states it directly: openGym is "free and stays free: AGPL, no paid tier, nothing held back for sponsors." That's a real difference from other projects in this series with a hosted Pro tier — closer to how NVDA, the free screen reader built in the open, treats monetization than to a typical SaaS roadmap — there's no revenue number to report here because the maintainer has deliberately ruled one out.

And 65 open pull requests against one reviewer is a bottleneck, not a footnote — a single-maintainer gate on a fast-growing community backlog that will only get harder to keep up with as the trending-page traffic continues.

What this generalizes to

The transferable habit isn't "use Claude Code" — plenty of repos claim that with no evidence. It's that openGym's AI-assisted process is legible: a CLAUDE.md naming the exact constraints ("dependency-light is a hard constraint," no linter, tests beside every training-logic helper), a CONTRIBUTING.md that extends the same tool-agnostic bar to every contributor, and a changelog with a real date for every claim. None of that requires being a strong engineer on day one — Duarte Santos describes himself as still in training. It requires writing down, before the first PR ever lands, exactly what the agent is and isn't trusted to decide on its own — so six weeks and sixty-five open pull requests later, the rule is still there to point to.

Sources

Every link below was fetched and checked before publishing.

  1. 1.GitHub — DuarteSantos8/openGym (repo: stars, forks, commits, issues, PRs, license, description) · checked
  2. 2.GitHub — openGym README (raw): features, Claude Code line, AGPL/no-paid-tier line, AI coach · checked
  3. 3.GitHub — DuarteSantos8 profile (bio, location, followers, pinned repos) · checked
  4. 4.GitHub — openGym commit history (main branch): authorship pattern · checked
  5. 5.GitHub — openGym releases (version history, v1.3.x dates and notes) · checked
  6. 6.GitHub — openGym LICENSE (raw): AGPL-3.0 text · checked
  7. 7.GitHub Trending — daily (openGym's rank, total stars, stars gained today) · checked
  8. 8.GitHub — openGym pull requests (open/closed counts, contributor usernames) · checked
  9. 9.GitHub — openGym repo tree (main branch): top-level files including CLAUDE.md, mcp/, docs/ · checked
  10. 10.GitHub — openGym CLAUDE.md (raw): development conventions for Claude Code sessions · checked
  11. 11.GitHub — openGym CONTRIBUTING.md (raw): AI-tools-in-PRs policy · checked
  12. 12.GitHub — openGym NOTICE.md (raw): third-party exercise media licensing caveat · checked
  13. 13.GitHub — openGym docs/SELF_HOSTING.md (raw): deployment and passkey/HTTPS requirements · checked
  14. 14.GitHub — openGym mcp/README.md (raw): read-only MCP server for AI agents · checked
  15. 15.GitHub — openGym CHANGELOG.md (raw): v1.0.0 launch date and full version history · checked

한국어 버전 읽기 →