Agon

strength through loss

New to Agon?
🔐
Two-factor authentication
Enter the 6-digit code from your authenticator app
Create your account
Free access, guest role. Your data stays on this server.
Password requires 10+ characters, uppercase, lowercase, a number, and a special character.

Set up two-factor auth

Scan the QR code with your authenticator app (Google Authenticator, Authy, etc.), then enter the 6-digit code to confirm.

Manual entry key

Agon

strength through loss

⚠ Cannot reach the API. Check that the backend container is running.
Last session
-
-
Average RD
-
last 4 weeks
Best session
-
-
Sessions
-
total logged
Quick log
Loading...
Session details
hm
hm
Session RD
0.00
Exercises
Avg bodyweight
-
lbs, last 4 weeks
60-day average RD
-
last 60 days
4-week trend
-
vs prior 4wk
Peak week
-
-
Phase
-
-
-
To goal
-
lbs remaining

Weekly averages. RD higher = stronger relative to bodyweight.

Relative Density (left) Monthly avg RD Bodyweight lbs (right)

Toggle protocol windows on chart. Shaded band = active period. For cycled protocols, shaded = on cycle, gap = off cycle.

Overlay 7-day avg deep sleep % (green≥25%, yellow 15-24%, red<15%)
Phases
Loading...
Macro calculator
Set your height, weight, date of birth, and gender in Settings to calculate macros.
Macro targets
Loading...
Protocols
Loading...
Quick log

Tap to log today's dose at the item's default amount. Stock decrements automatically.

Loading...
Protocols
Loading...
Inventory
Loading...
Recent doses
Loading...

New training phase

Add inventory item

Vials: track remaining in mg/mcg for reconstitution math. Capsules/sprays: track remaining as a piece count.

Add protocol

Fill in the fields above to preview the schedule string.

Backfill

Enter what you had on hand as of a date. Every dose logged for this item since then — including historical imports matched by name or protocol — gets subtracted automatically.

iu can't be converted to mg/mcg — either enter the vial amount in the same unit as below, or change Unit to iu.

Per dose is currently — the number above must be in the shown here, or the math will be off by whatever factor separates them.

Add dose

Log a dose at a specific date and time. Stock decrements from the selected item, same as Quick Log.

Amount pre-fills from the item's per-dose default; adjust it for a partial or double dose.

Edit exercises, adjust multipliers, or add new ones. Changes are shared across all users.
Exercise Tool Mult Muscle BW? Formula
Strength Progress by Muscle
% change in relative density (RD) per muscle group, needs 4+ sessions to show signal
Color scale
Gain
No change
Loss
Hover for details
Relative density over time
RD per session for selected exercise
Current
-
Avg
-
Peak
-
4wk trend
-
Session RD 4-session avg All-time avg
Top set & estimated 1RM over time
Top set Est. 1RM
Personal records by rep count
Block rep curve 👑 Trigger hit last session
Last session, reps per set
Total reps per session
Set 1 reps, adaptation trend
Load history, reset arc
⚠️ One or more sets dropped below 4 reps last session, load may have jumped too far.
Session volume over time
Volume 4wk avg
Strength maintenance (all exercises)
Exercise Current Peak Ratio
Import from Excel
Upload a filled template to import historical sessions. Download the template first - it includes a Legend sheet explaining every field and modifier.
Export to Excel
Log, Trend, and ExerciseBank sheets with relevant information on your progress.
Sheet summary
Sheet Columns Rows
LogDate, Weight, Exercise, Load, True, Reps, Vol, Time, Density, Rel Density, Notes, Phase, Flag, Sleep (hrs), Deep Sleep %-
TrendWeek Ending, Relative Density Avg, Weekly Weight Avg (lbs)-
ExerciseBankName, Alias, Tool, Multiplier, Muscle Group, Load Input, Is Bodyweight- rows
ProtocolsProtocol Name, Category, Dose, Frequency, Start Date, End Date, Cycle On (days), Cycle Off (days), Cycle Anchor, Tracked, Notes-
DosesTaken At, Item, Protocol, Compound, Amount, Unit, Notes — follows the date range above-
InventoryName, Type, Category, Linked Protocol, Total, Remaining, Per Dose, Unit, Status — current snapshot-
Log preview (last 5 rows)
Connect an AI model to unlock Insights
Ask plain-English questions about your training history and get answers grounded in your actual data. Add either your Gemini or Claude API key to get started.
Manage user accounts. Guests have full access to their own data. Demo is read-only and displays sample data.
Username Role 2FA Created
Activity summary
User Logins Sessions AI queries Imports Last seen
Loading...
Recent activity
When User Event Detail
Loading...

Create user

Change password

User:

Settings

Profile
ft in

Account

Two-factor authentication

External API
Generate a read-only API key to share your training data with external tools or AI assistants. Anyone with this key can read your data.
Loading...

Garmin
Not configured
Fills sleep and bodyweight on a workout from your Garmin data. Requires a garmin-grafana instance writing to InfluxDB 1.x. Leave blank to disable.
Reachable from the Agon backend container — a container name beats a host IP. Both fields are required; clearing either turns the feature off.

AI Insights
Your key is encrypted and stored only on your server - never shared.
Gemini: free key at aistudio.google.com · Claude: console.anthropic.com
Local Ollama instance URL. Leave blank if running locally on default port.

Muscle groups

Select all that apply for this exercise.

Add new exercise

Click to select muscle groups…

Agon, Guide

Agon tracks Relative Density (RD): your total session volume divided by total time multiplied by bodyweight. A rising RD means you are getting stronger relative to your bodyweight, regardless of whether that weight is going up or down.
Workout

Log each training session here. Set the date, your bodyweight, and optional session notes. Log sleep for the night before, total hours and deep sleep hours, to track recovery alongside training. Add exercises one by one - each set gets its own load, reps, and time. The app calculates volume, density, and RD automatically as you build the session. Hit Save to commit. Saved sessions appear in History.

  • Bar type - toggle between Standard (total weight) and Vitruvian (weight per side ×2)
  • Bodyweight exercises - choose Normal, Vest (adds lbs), or Assisted (subtracts %)
  • Crown icon 👑 in History - flags when an exercise hit its rep accumulation trigger, signaling time to increase weight. The trigger is configurable in Settings
  • Sleep - log total sleep and deep sleep in hours and minutes. Deep sleep quality is color-coded on the Trend chart (green ≥25%, yellow ≥15%, red <15% of total sleep)
  • Quick log - one-tap dose logging for your stack items, right on the Workout tab. Buttons show each item's per-dose measure (syringe units or capsule count); stock decrements automatically
  • Sync Garmin - optional. If an admin has configured Garmin in Settings, a ⌚ button appears next to the sleep fields and fills sleep, deep sleep, and bodyweight for the session date in one press. It is manual rather than automatic because the app is often opened before the overnight sync or the morning weigh-in has landed. Every value stays editable, and sleep and weight fill independently if only one is available
History

Filterable log of all sessions. Defaults to the current month. Use the date range and exercise filter to look further back. Edit or delete sessions from here. The delta badge shows RD change vs the prior session.

Trend

Weekly RD and bodyweight overlaid on a dual-axis chart. Colored bands show your training phases (Weight Loss, Cut, Recomp, Bulk, etc). The Recomp score card tells you whether you are building strength while losing weight, maintaining, or regressing.

  • Phases - add phases to track your training cycles. Phases inform the AI and the macro calculator
  • Protocols - toggle any protocol (active or discontinued) as a shaded band on the chart to correlate RD trends against its timing. For cycled protocols, shaded segments are on-cycle windows and gaps are off-cycle. Tap a name to edit; full management lives in the Stack tab
  • Sleep overlay - toggle weekly deep sleep quality bands on the chart. Green = restorative (≥25% deep), yellow = marginal (≥15%), red = poor (<15%). Coexists with protocol overlays
  • Macro calculator - computes BMR, TDEE, and daily macro targets based on your profile and current phase
  • Macro targets - retroactive macro history across all logged phases using average bodyweight per phase period
Stack

Manage your supplements, peptides, and medications end to end: what you take (Protocols), what you physically have (Inventory), and what you actually took (dose log).

  • Protocols - the protocol builder captures dose, unit, time of day, weekday schedule, and optional on/off cycling with an anchor date. Cycle status badges (On cycle, Off cycle, Upcoming, Discontinued) update automatically. Discontinued protocols are hidden by default; use the toggle to reveal them
  • Inventory - physical stock per item with reconstitution math (BAC water, units per dose as a syringe reading), vials remaining, and low-stock flagging. Link items to protocols so doses decrement the right stock. The Backfill tool reconciles stock against your logged dose history
  • Quick log - one-tap dose logging at each item's default amount, mirrored on the Workout tab
  • Recent doses - the execution log. Edit or delete entries; deleting restores stock
Progress

Per-exercise analysis. Select any logged exercise to see top-set load over time, estimated 1RM (Epley formula), PR table by rep count, and session volume trend. For fixed-load accessory exercises, the Block Rep Curve panel appears showing the fatigue decay, total reps trend, Set 1 adaptation trend, and load reset arc. See The Method tab for an explanation of this system.

  • Block Rep Curve - only appears for exercises with fewer than 10 sets per session. Exercises with 10+ sets are treated as wave/varied protocols and are exempt from Block Rep Curve analysis and rep trigger accumulation
Insights

AI-powered analysis of your training data. Ask plain-English questions and get answers grounded in your actual session history, profile, active phase, and protocols. Set up one of three AI providers in Settings: Google Gemini (free tier available), Anthropic Claude (API key required), or Ollama (fully self-hosted, no external API calls).

  • Example questions: "Am I losing strength on my pulls?", "Which sessions had the best RD?", "How does my RD compare between my Weight Loss and Recomp phases?"
  • The "Build a meal plan with AI" button on the Trend tab sends your macro targets directly here
  • Garmin recovery - if Garmin is configured, the AI also receives 90 days of daily recovery: sleep, sleep score, overnight HRV, resting heart rate, body battery, and high-stress hours. This covers rest days too, which the session log cannot, so you can ask things like "did my RD drop the week my HRV fell?" or "how does my sleep score track against my training load?". It is read at question time and never stored
  • Privacy tip: Choose Ollama for fully private analysis with zero data sent to external servers
Exercises

The shared exercise bank. Add, edit, or remove exercises. Each exercise has a tool type, a multiplier, muscle group tags, and a load hint. You can set a per-exercise rep trigger override here to override your global default for specific exercises.

Data

Import and export your session data as Excel files.

  • Import - download the template, fill it out (each row is one set), upload it. The Phase column is optional but will create phase records automatically
  • Export - filter by date range and phase before downloading. Exports Log, Trend, and ExerciseBank sheets
Settings (click your username)

Opens via clicking your username in the top-right corner.

  • Profile - name, DOB, gender, height, target bodyweight, week start, activity level, rep accumulation trigger (default 50), and set time (default 1.5 min, pre-fills the time field on every new set and drives RD calculation)
  • Account - change your password
  • Two-factor authentication - enable TOTP-based 2FA. Scan the QR code with any authenticator app. Admins can reset it via the Admin panel if you lose your device
  • External API - generate a read-only API key for your data for use with external AI tools
  • Garmin - admin only, and optional: leave it blank and the feature does not appear anywhere. Point it at a garmin-grafana InfluxDB 1.x instance (URL plus database name) and a Sync Garmin button appears on the Workout tab, filling sleep and bodyweight from your own Garmin history. The URL must be reachable from the Agon backend container, so a container name works better than a host IP. It is admin-gated because the server fetches whatever URL is entered. Use Test to prove the connection before saving: it reports whether the host is reachable, whether the database exists, and the latest sleep and bodyweight it can see
  • AI Insights - choose your AI provider: Gemini (free tier available), Claude (API key required), or Ollama (self-hosted, fully private). Keys are encrypted and stored on your server. Ollama requires a local or remote instance running an OpenAI-compatible API

Protocols (supplements, peptides, medications) are managed from the Stack tab, alongside inventory and dose logging. The Trend tab offers a simplified toggle list for chart correlation. Protocols are passed to the AI as context. Agon does not provide medical advice.

Agon is built around a specific training methodology that combines density-block accumulation for accessories with dual-wave progressive overload for compound lifts. This page explains the science behind both systems and why they work especially well during active weight loss or GLP-1 therapy.
Why Relative Density?

Conventional strength trackers reward absolute load on the bar. But when you are actively losing weight, through dieting, a cut phase, or GLP-1 medication, your bodyweight is a variable. A 200 lb person lifting 100 lbs is doing more relative work than a 220 lb person lifting the same weight. RD captures this: RD = volume ÷ (time × bodyweight). A rising RD alongside a falling bodyweight is the signal that you are preserving or building strength while losing mass.

This matters most for people on GLP-1 medications (semaglutide, tirzepatide, retatrutide), where weight loss can be rapid and the risk of losing lean mass alongside fat is real. If your RD is rising, your muscle is being preserved. If it is falling while your weight falls, you need to adjust training or nutrition before a body composition scan would show it.

Accessory blocks, escalating density, fixed time, cumulative reps

Accessory exercises (bicep curls, lateral raises, flyes, tricep extensions, etc.) are trained in fixed-load density blocks: multiple sets at the same weight, AMRAP each set, with a fixed rest interval between sets. The goal is to accumulate a target number of total reps across the block before increasing the load.

The principle is escalating density within a fixed time block. By keeping the load constant and the rest interval fixed, your body is forced to do more total work as it adapts, your rep counts climb session over session at the same weight until you hit the trigger and move up. This is a direct application of progressive overload at the volume level rather than the load level.

Taking each set close to muscular failure is the primary driver of both hypertrophy and strength across a wide rep range (Schoenfeld et al., 2017). Fixed load with timed rest creates a predictable fatigue curve, your first sets will be higher rep, your later sets lower as fatigue accumulates. This is expected and correct. The rest window sits squarely in the research-supported range for hypertrophy-focused work (Schoenfeld, 2010).

The rep accumulation target acts as a readiness signal: once you are producing enough total reps in your fatigued state, the load is no longer a sufficient stimulus and it is time to progress. A typical progression looks like:

  • Session 1 at new load: 10, 8, 6, 6, 5, 5 = 40 reps, still building
  • Session 3: 12, 10, 8, 7, 7, 6 = 50 reps, trigger hit, load up next session

Load increments are deliberately small, 1 lb for smaller muscle groups (biceps, triceps, shoulders), up to 1.5 lb for larger ones, because microloading allows near-continuous progression without the stalls common with larger jumps. Your rep trigger is configurable in Settings (default 50). Your set time is also configurable in Settings (default 1.5 min), this value pre-fills the time field on every new set and is the denominator in the RD and density calculations. Adjust it to match your actual rest-plus-effort window. You can also set a per-exercise rep trigger override in the Exercise bank.

Reading the Block Rep Curve

The Block Rep Curve panel appears in the Progress tab when you select a fixed-load accessory exercise. It shows three signals:

  • Set-by-set bars: the fatigue decay from your last session. Set 1 is shown in green, subsequent sets in orange. A healthy curve slopes downward. A flat curve means the load is too light. A red bar flags any set below 4 reps, the load may have jumped too far.
  • Total reps trend: cumulative reps per session over time, with your trigger threshold as a dashed reference line. Green bars have hit the trigger; orange bars have not.
  • Set 1 reps trend: your opening set performance across sessions. This is the cleanest signal for systemic fatigue. If Set 1 reps start declining session-over-session at the same load, you may be under-recovered or under-fueled. Rising or stable Set 1 reps means the adaptation is on track.

If a load reset is detected (your logged load dropped from a previous peak), the Reset Arc shows where you reset from, your current load, and a progress bar back toward your previous peak.

Compound lifts, dual wave, weekly +1

Compound movements (deadlifts, squats, bench press, rows, shoulder press) use a different structure: 10–12 sets across two ascending waves, with the starting weight increasing by 1 lb each week regardless of rep performance.

Dual-wave loading alternates between two ascending load sequences within the same session. The first wave warms up the nervous system and accumulates submaximal volume. The second wave, starting slightly heavier, exploits post-activation potentiation, the CNS is already primed, so outputs are higher than they would be cold. The fixed +1 lb/week progression on the starting weight provides a simple, non-negotiable overload mechanism. Three months of consistent training adds roughly 12 lbs to the starting weight of every compound.

Timed efforts

Some exercises are trained as pure timed efforts, maximum reps in a fixed window (typically 20 minutes) with no fixed set count. Pull-up variations are a common example. As your bodyweight falls, the relative load per rep decreases automatically. Agon tracks total reps and your bodyweight so the RD calculation captures both dimensions.

Voluntary load resets

If you grind badly on an exercise, Sets 5 and 6 dropping to 3–4 reps, the right move is to reset the load and rebuild. This is calibration, not failure. Agon's load reset tracker detects this and shows the rebuild arc: where you reset from, your current load, and how close you are to your previous peak.

Global deloads from travel or time off are handled the same way, come back, reset, rebuild. The data stays and the RD trend will show the recovery arc.

Exemptions: Wave protocols and kettlebells

Two exercise patterns are exempt from Block Rep Curve tracking and rep trigger accumulation:

  • Wave and varied protocols (10+ sets per session): exercises trained with 10 or more sets in a single session are assumed to be undulating periodization or wave loading. These don't follow fixed-load density escalation. Block Rep Curve won't appear for these exercises, and they won't trigger rep accumulation signals. Track them separately via your session notes or the Progress tab's overall trend chart.
  • Kettlebell exercises: kettlebells are exempt from rep triggers entirely. The asymmetric load, inherent instability, and technique sensitivity make rep-count based progressions less reliable than fixed barbells or dumbbells. Progress kettlebells by feel, technique quality, or load when it suits the session.
Rep trigger mechanics: Load increments and muscle-dependent thresholds

The rep accumulation system is sensitive to muscle group size. Smaller muscles (biceps, triceps, shoulders) recover and adapt faster, so their load increments are smaller. Larger muscle groups (chest, back, legs, glutes) need bigger jumps to remain challenging as they adapt.

  • Small muscles: 1 lb increments (biceps, triceps, shoulders, calves)
  • Large muscles: 1.5 lb increments (chest, back, legs, glutes)

Default rep trigger: 50 reps per block. This is total reps across all sets at the same load. Once you hit 50 (or your custom threshold), the next session moves up by the increment above.

Bodyweight exercises have a separate trigger: 100 reps. Bodyweight movements accumulate reps faster due to reduced neural demand per rep, so the threshold is doubled to keep stimulus progression reasonable.

Per-exercise overrides: You can set a custom rep trigger for any individual exercise in the Exercise bank. Use this if an exercise responds better to a higher or lower threshold than the global default.

Bodyweight exercises: Multipliers and RD calculation

Bodyweight exercises (pull-ups, dips, push-ups) are scaled by a muscle-group specific multiplier. This accounts for the fact that bodyweight work is highly correlated with your total body mass, not just local muscle. Agon uses these multipliers:

  • Pull-ups / chin-ups: 0.6× your bodyweight. A 200 lb person pulling up moves ~120 lbs of effective load.
  • Dips: 0.6× your bodyweight
  • Push-ups: 0.4× your bodyweight
  • Pistol squats / shrimp squats: 0.75× your bodyweight

When you log a bodyweight exercise, the app calculates the effective load (bodyweight × multiplier) and uses that in your RD calculation. As you lose weight on GLP-1 or a cut, the effective load per rep automatically decreases, but the RD calculation captures it. A rising RD on bodyweight work while your weight falls is a powerful signal of true strength preservation.

You can also add weight via a vest (adds to BW) or subtract it via assistance (percentage reduction). These appear as modifiers in the set entry form.

Deload philosophy: Subjective, externally driven, not algorithmic

Agon does not suggest deloads or algorithmic recovery windows. This is intentional. Deloads are a response to life stress, travel, illness, accumulated fatigue, or a grinding session, not a calendar event. Forcing a deload based on an algorithm often leads to unnecessary training loss or, conversely, training when you shouldn't.

Instead, you own the decision. If you need a deload:

  • Reduce volume, load, or frequency for 3–7 days
  • Log the lighter sessions normally, Agon will show the dip in RD and volume
  • When you return to normal intensity, you'll see the recovery arc in the Trend chart and a reset arc in Block Rep Curves if you stepped back load-wise
  • Use your AI Insights to ask: "Did my RD recover after my deload week?" or "How does my Set 1 rep performance look?"

This approach respects the reality that you know your body better than an algorithm ever will, while Agon provides the data to verify that your decision worked.

Anatomy heatmap: RD delta by muscle group

The Progress tab shows an anatomy heatmap with muscle groups shaded by color intensity. This heatmap displays RD change per muscle, not load change. It answers: "Which muscles am I getting relatively stronger in, and which are lagging?"

Interpretation:

  • Green (bright): RD is rising for that muscle group. You are accumulating strength in that area relative to your bodyweight.
  • Yellow/orange (neutral to warm): RD is flat or rising slowly. Maintenance or modest progress.
  • Red (dark): RD is falling for that muscle group. You may be losing relative strength there, or training frequency for that muscle is low.

This is useful for spotting imbalances. If your back RD is rising but your chest RD is falling, it might signal an overemphasis on rows/pulls and underemphasis on pressing. Use this as input to adjust your next training phase.

Profile Info

Step 1 of 5
Gender and age help us tailor AI insights to your training stage and recovery capacity. This stays private.
Agon
strength through loss
Agon tracks your Relative Density - a single number that tells you how much work you can do per minute relative to your bodyweight.
As you lose weight, RD tells you whether you are also losing strength - or outpacing it. It works just as well for bulk and cut cycles, recomps, and peak phases.
Built for athletes who care about relative strength, not just numbers on a bar.

Optional profile details

Step 3 of 5
These help with macro calculations and the macro calculator. You can always update them later in Settings.
ft in

Current protocols

Step 4 of 5
Take any supplements, peptides, or medications you want tracked? Add names now; doses, schedules, and cycles can be filled in later on the Stack tab. Protocols overlay on the Trend chart and feed AI context.

How Agon works

Step 5 of 5
Workout

Log every session here. Each set gets a load, reps, and time. RD is calculated automatically. The 👑 crown in History flags when an exercise hits its rep trigger - time to add weight.

Trend + Phases

Weekly RD and bodyweight on one chart, with colored phase bands. Add training phases (Weight Loss, Recomp, Bulk, etc) to annotate your history. The macro calculator uses your phase and profile to give you daily calorie and macro targets.

Stack

Manage protocols (supplements, peptides, medications) with schedules and on/off cycles, track physical inventory with syringe-unit dose readings, and log doses with one tap. Protocol windows overlay on the Trend chart to correlate against RD.

Insights

Ask plain-English questions about your training data. Powered by Gemini, Claude, or self-hosted Ollama - configure in Settings (click your username). Questions like "Am I losing strength on my pulls?" get answers grounded in your actual sessions.

Data

Import historical sessions from Excel using the provided template. Export with optional date range and phase filters. Generate a read-only External API key in Settings to share your data with any AI or external tool.

Tip: Click your username in the top-right at any time to edit your profile or connect an AI key. Manage protocols from the Stack tab. Click ? to reopen this guide.

What's new in v