Documentation
User Guide
A complete walkthrough of PepCycle — from adding your first vial to configuring automatic notifications.
For quick answers see the FAQ. Try the free reconstitution calculator for single vial and fixed-ratio blend calculations without signing up. For the math behind calculations, see How It Works.
Getting started
Product is the generic term in PepCycle for anything you track and schedule. PepCycle is a personal tracking application for products, dose logs, and protocol schedules. It supports three product types — reconstituted (lyophilized) vials, pre-mixed oil vials, and oral tablets — and tracks the right inventory and dose math for each. It is an organisational tool — not medical software.
After signing in, you'll land on the Dashboard, which shows your active protocols and upcoming doses. The four main sections are:
If you prefer a leaner dashboard, choose Customize dashboard beside the Dashboard actions. You can tune each section, reorder products, and show a forecast-backed Inventory summary. Schedules, inventory records, notifications, and history are unaffected.
- Dashboard — Active protocols, upcoming 7-day schedule, quick dose logging, and inventory status.
- Inventory — Product containers, sealed stock, and applicable supplies such as BAC water and syringes.
- History — A filterable log of every dose, reconstitution, inventory event, and notification.
- Settings — Notification channels, syringe preferences, profile, and data management.
Products & containers
A product entry in PepCycle represents your current active container of a specific compound — a reconstituted vial, an oil vial, or an oral bottle/sheet, depending on its product type. For lyophilized peptides it stores the vial size, unit (mcg, mg, or IU), the BAC water added during reconstitution, and the remaining amount; oil and oral products track remaining volume (ml) or tablets instead.
Each peptide has a product type that determines its workflow, inventory, and dose math:
- Lyophilized — a freeze-dried powder you reconstitute with BAC water and inject. Tracks BAC water, syringe units, and concentration.
- Oil — a pre-mixed oil solution. No BAC water or reconstitution; you open a new vial and inject. PepCycle converts the dose into an injection volume (ml) and syringe units from the vial concentration.
- Oral — tablets or capsules in a bottle or blister sheet. No BAC water, syringe, or reconstitution; PepCycle converts the dose into a tablet count (fractional tablets allowed) and tracks remaining tablets.
Existing products default to lyophilized, so nothing changes for current vials. You can filter the Your products list and History by product type, and switching a product's type asks for confirmation before resetting its type-specific fields (your dose history is never changed).
From the Dashboard, tap Product and choose its product type — the fields adapt to it. For a lyophilized peptide you fill in:
- Name — free text or choose from the registry
- Vial size — the total amount in the sealed vial (e.g. 5 mg)
- Vial unit — the unit the vial is labelled in (mcg, mg, or IU)
- Default dose amount & unit — pre-fills the log-dose dialog for convenience
- Colour — used for visual identification across the app
Reconstitution data (BAC water volume) is entered separately when you actually reconstitute the vial. Oil-based products capture volume per vial (ml) and mg per ml instead; oral products capture tablets per container and mg per tablet — neither uses BAC water or reconstitution.
When you add BAC water to a dry peptide vial, record this in the peptide card by tapping Reconstitute. You'll enter the volume of BAC water added (in ml).
This reconstitution event does two things:
- Sets the concentration used in all syringe calculations (e.g. 5 mg / 2 ml = 2.5 mg/ml)
- Deducts the BAC water used from your BAC water inventory item (if you've linked one)
If the current vial still has peptide remaining, you can choose to use that remainder first. The new vial is saved as a prepared vial with its reconstitution timestamp immediately, then it waits until a dose needs it.
A dose can be split across the current and prepared vials. When the two vials have different concentrations, PepCycle calculates syringe units for each vial separately and shows the total.
The remaining amount starts at the full vial size and is automatically decremented each time you log a dose. The amount deducted equals the dose converted to the vial's unit (e.g. 250 mcg deducted from a vial stored in mg = 0.25 mg deducted).
The dashboard's Next 7 days section projects vial usage in chronological order. If today's dose empties the current vial and uses a prepared vial for the rest, tomorrow's preview uses the prepared vial only.
The section now builds the full calendar window for today plus the next six days, then groups each day into expandable rows. Today and tomorrow stay open by default; later days show a count so no scheduled doses are silently hidden.
If you need to correct the remaining amount (e.g. after spillage or a manual adjustment), use the Adjust vial option on the peptide card. This creates an adjustment record in History. Adjust also has a Discard vial shortcut — if a prepared vial is already ready to go, discarding switches to it immediately instead of leaving the card stuck at 0 remaining.
When a vial is empty or you start a new batch, use the Discardor Replace option on the product card. This closes the current vial (setting its status to discarded) and lets you enter new vial parameters for the fresh vial.
Previous dose history is retained — only the current vial data is replaced. Your protocol schedules continue unaffected.
Protocols & schedules
A protocol is a repeating dose schedule for one peptide. It defines when a dose is due, how much to take, and what syringe to use. The Dashboard shows all active protocols and their upcoming schedule.
Three schedule patterns are supported:
- Daily — one dose every day at a fixed time
- Every N days — one dose every 2, 3, 5, 7 days, etc.
- Specific weekdays — e.g. Monday, Wednesday, Friday
All schedules use a fixed time of day (24h format) for dose timing. This is the time used for reminder notifications and for determining the next due date.
Each protocol has a next_due timestamp — the next scheduled dose date and time. When you log a dose (manually or via auto-log), next_due automatically advances to the following occurrence based on the schedule pattern.
This means PepCycle always shows you exactly when the next dose should happen, regardless of whether the previous one was on time or missed.
The Reminder behavior setting in Settings controls how far in advance a notification fires before the scheduled dose time:
- At time of dose — notification fires within 10 minutes after next_due (2 scheduler ticks for reliability)
- 15 min before — fires in the window 15 min before next_due
- 30 min / 1 hour / 2 hours / Same day — similarly timed windows
The worker runs every 5 minutes. A notification fires once per protocol per scheduled dose slot.
Protocols can be active or inactive. Only active protocols appear on the dashboard and trigger notifications. You can pause a protocol without deleting it.
Setting an end date automatically deactivates the protocol after that date. Once a protocol's next_due exceeds its end date, no further notifications fire.
Editing a protocol (changing dose amount, schedule, or time) takes effect immediately on the next notification cycle.
Protocol edits are recorded in History with readable change details. Simple edits show the before/after value inline, while larger edits can be expanded to review the full list without crowding the timeline.
Protocol Groups collect related protocols so you can activate or deactivate them together, plus archive, unarchive, delete, or Start new cycle for the set. Advanced group schedules can sequence members, such as starting one protocol with the group and starting later protocols after another member's active days.
Deactivating a group pauses due doses, forecasts, and notifications without deleting member protocols or changing their saved active intent. Activating later shifts each paused member's start date and next due forward by the paused time, so cycle and titration position continue where they left off. Start new cycle resets the group from today and keeps any saved sequencing. Archiving or deleting a group only affects the group itself - member products and protocols are kept.
If a member schedule changed while the group was paused, PepCycle asks you to start a new cycle instead of applying a stale resume. Vacation Mode is separate and takes precedence for its date range. Use Customize dashboard - Protocol groups to show or hide the section, member chips, group notes, the status note, and the archived list.
Logging doses
Doses can be logged manually from the Dashboard or automatically via the notification auto-log feature. Every logged dose appears in History.
Tap the Log dose button on a protocol card on the Dashboard. The dialog pre-fills the dose amount and unit from your protocol. You can override any field:
- Amount & unit — override the scheduled dose
- Syringe units (IU) — auto-calculated from vial concentration; shown as the number of marks to draw up on a U-100 syringe (or your configured syringe type)
- Notes — optional free text per dose
- Date/time — defaults to now, can be backdated
When you open the log-dose dialog, the app calculates how many syringe IU marks to draw up based on:
- Vial size and BAC water volume (concentration)
- Dose amount and unit
- Your syringe type (U-100 by default, configurable in Settings)
The result is displayed as IU marks — the number you draw on your syringe. For example: "10 IU" means fill to the 10-unit mark on a U-100 insulin syringe.
If reconstitution data is missing, the syringe units field shows "—" with a note to add reconstitution data.
Doses logged from the dialog are tagged as manual. Doses created automatically after a notification delivery are tagged asnotification and show an "auto-logged" badge in History.
Both types deduct from the vial's remaining amount and advance next_due identically. The source tag is purely informational.
Inventory
The Inventory page tracks your product stock and consumable supplies: product containers (peptide vials, oil vials, and oral bottles/sheets), BAC water, syringes, and anything else you want to monitor. Items can trigger low-stock notifications and are included in the depletion forecast.
Empty inventory sections now show the next setup action directly, so you can add product stock, BAC water, or syringes from the empty section itself.
- BAC water — tracked by volume (ml). Used automatically when you reconstitute a peptide vial.
- Syringe — tracked by count. Can be linked to a protocol so each dose auto-deducts one syringe.
- Peptide vial stock — tracked by vial count. Link to a product catalog entry so one vial is deducted when you reconstitute from the Dashboard. You can create the catalog entry directly from either the Dashboard or Inventory — no need to set it up in advance.
- Oil vial stock — tracked by vial count for oil-based products. One vial is deducted when you open a new oil vial; no BAC water or reconstitution is involved.
- Oral container stock — tracked by bottle or sheet count for oral products. One container is deducted when you open a new bottle/sheet.
- Other — miscellaneous items tracked by any unit you define.
In a protocol's settings, you can select a preferred syringefrom your inventory. When this is set:
- Each dose logged (manually or auto-logged) deducts 1 unit from that syringe item's remaining quantity.
- The syringe inventory is included in low-stock forecasting for that protocol.
Peptide vial stock can be created from either direction — you don't need to pre-create a catalog entry before tracking stock, or vice versa.
From Dashboard (while adding a peptide):
- Enable Count as new reconstitution, then enable Consume peptide vial.
- If no stock is found for this peptide, an Add stock nowlink appears inline. Click it to enter strength, unit, and vial count — the stock item is created and selected automatically without leaving the form.
- Inventory tracking is optional: choose Not tracked / external to skip stock deduction and continue with the reconstitution normally.
From Inventory (while adding peptide vial stock):
- In the Product selector, choose an existing catalog entry or select + New product… to type a new name.
- If a new name is entered, a catalog entry is created automatically (reusing an existing one if the name already exists in normalized form).
- The new catalog entry then becomes available in the Dashboard product selector. Its product type and container defaults prefill the fields used for future reconstitutions, oil vials, or oral containers.
Inventory cards include Add new batch from same vendor for quickly adding a new stock entry based on the previous one. PepCycle pre-fills the item name, unit, vendor, batch/lot, and relevant strength or container details.
This is different from refilling the current item to its full amount. It creates a new batch/stock item, leaves opened and expiry dates for review, and records history as a new batch with the quantity plus any vendor or batch details you kept.
The Dashboard shows a forecast for each active protocol: how many doses remain in the current vial, and how many days until the vial or a linked syringe item runs out. This is estimated from:
- Current remaining amount in the vial
- Dose amount per protocol occurrence
- Schedule frequency (doses per week)
Forecasts are estimates. They update automatically after each dose log, reconstitution, or inventory adjustment.
Syringe coverage requires a protocol assignment. A syringe item is only included in coverage forecasting and low-stock alerts when at least one active protocol has that item set as its preferred syringe. Syringe stock with no linked protocol is shown with a neutral "No active schedule uses this syringe stock" indicator and is never flagged as low. Assign a syringe item in a protocol's settings to enable coverage tracking for it.
When an inventory item's forecast coverage drops below your configured threshold — based on how long it's expected to last given your linked schedules — or it runs out entirely, a low-stock alert is sent via Telegram (if configured) and can be enabled via push notifications. Each item triggers one alert when it first enters the low-stock state; alerts are suppressed while the item remains low, then reset once stock recovers so the item can alert again if it drops low in the future.
Notifications
PepCycle supports two notification channels — browser push and Telegram — which can be used independently or together. Notifications are sent by a background worker that runs every 5 minutes.
The in-app bell also keeps persistent alerts for low inventory, products or containers needed for upcoming doses, and overdue doses. Each alert includes a quick action to open the right place to restock, prepare or open a product, or log/skip the dose.
Push notifications appear on your device even when PepCycle is not open, as long as your browser has notification permission granted.
Setup:
- Go to Settings → Push notifications
- Enable push and grant browser permission when prompted
- Use the test button to confirm delivery works
The notification body shows the dose amount and syringe IU marks (e.g. "250 mcg · 10 IU") so you know exactly how much to prepare without opening the app.
Telegram delivery uses your own bot token and chat ID — PepCycle never stores or transmits your messages through any third-party except Telegram's own API.
Setup:
- Create a bot via @BotFather on Telegram; copy the token
- Send any message to your new bot to get a chat ID (or use a group/channel)
- Enter token + chat ID in Settings → Telegram
- Send a test notification to confirm it works before enabling scheduled delivery
Telegram messages include the peptide name, dose, syringe IU marks, and concentration reference (e.g. "1 IU = 25 mcg").
In Settings → Notification digest, you can bundle non-urgent inventory, reconstitution, and general app alerts into one daily message. The digest is disabled by default.
Dose reminders stay immediate by default and in-app bell alerts still appear right away. The current digest delivery channel is Telegram; push digest delivery is deferred. Quiet hours also apply to digest delivery.
In Settings → Reminder behavior → Auto-log doses, you can enable automatic dose logging whenever a notification is successfully delivered.
When enabled, the app will:
- Insert a dose record matching your protocol's scheduled dose
- Deduct from vial remaining amount
- Advance next_due to the following occurrence
- Deduct one syringe from linked inventory (if configured)
Auto-logged doses show an "auto-logged" badge in History. A day-level duplicate check prevents double-logging if you also log manually on the same day.
Browser push notifications on iPhone require iOS 16.4+ and the app to be installed as a PWA (Add to Home Screen). Safari does not support push notifications on websites — only installed PWAs.
To install PepCycle as a PWA on iPhone:
- Open the app in Safari
- Tap the Share button (box with arrow)
- Tap "Add to Home Screen"
- Open PepCycle from the home screen icon
- Enable push notifications in Settings
Lab Tracking
Lab Tracking is an optional module for tracking lab reports, marker values, reference ranges, comparisons, trends, and AI Connector import reviews. It is disabled by default and does not change your products, protocols, inventory, or dose history.
Open Settings - Lab Tracking and turn on Enable Lab Tracking. You can separately choose whether Labs appears in navigation and whether the dashboard includes the compact labs summary card.
Turning the feature off hides the navigation and dashboard card but does not delete saved reports, results, or pending imports.
Use Manual Entry to create a report, set the lab date, provider, notes, and marker rows. Choose markers from the English marker library or select Custom marker when a result is not in the library.
Common Panels adds common marker groups such as metabolic, thyroid, liver/kidney, hormones, and vitamins/iron. Copy Previous copies the selected or latest report's marker set as blank rows for faster repeat entry.
Report-specific and user-entered reference ranges are stored with the result. General marker-library ranges are informational fallbacks only.
Latest per marker shows the newest available result for each marker, even when different lab reports contain different marker sets. Each row shows the source lab date so separate reports are not presented as one combined report.
Latest report shows only the most recent report. Compare lets you compare two reports and choose any-marker or common-marker mode; missing values are labeled Not tested.
Trends charts numeric markers that have at least two results in compatible or safely normalized units. Unsupported conversions are not guessed.
AI Connector lab imports create a pending review item in Labs. PepCycle saves final reports and results only after you confirm the import in the app.
Lab Tracking can contain sensitive health data. Only the signed-in user can access their own lab reports, results, and pending imports. Data deletion includes a dedicated Lab Tracking delete action, and account deletion removes lab data with the rest of the account.
AI Connector
The AI Connector is PepCycle's MCP connector for supported MCP-compatible AI clients. With read access, connected AI clients can answer questions about your products, schedules, exact occurrences, protocols, inventory forecasts, inventory item details, active alerts, product containers, history, and PepCycle calculator math — for any product type (lyophilized vials, oil-based products, or oral tablets), using the right units for each (mcg/mg/IU, ml, or tablets). With write access, connected AI clients can also perform confirmed product, protocol, dose, inventory, and container lifecycle changes on request.
Connected AI clients only ever see your own data, and they must read the relevant record and confirm the exact change before writing. Access is managed and revocable in Settings → Connector.
Supported clients may include Claude Code, Claude Desktop, claude.ai custom connectors, ChatGPT/OpenAI clients where MCP/custom connectors are supported, and other MCP-compatible tools. Claude is one supported example, not the whole feature.
Pick the mode your AI client supports:
- Personal Access Token (PAT) — for clients that can send a fixed
Authorizationheader, including Claude Code and Claude Desktop. In Settings → Connector → Personal access tokens, name a token, choose read-only or "Allow writes", and create it. Copy thepep_pat_…value immediately — it is shown only once — then add the MCP server in your client pointing athttps://pepcycle.bigyiatch.dev/api/mcpwith anAuthorization: Bearerheader. - OAuth — for claude.ai web custom connectors and other AI clients that support OAuth/custom connectors, including ChatGPT/OpenAI clients where MCP/custom connectors are supported. Add a custom connector with the URL
https://pepcycle.bigyiatch.dev/api/mcp; the client discovers the OAuth metadata, sends you to the normal PepCycle login, and shows a consent screen listing the requested read/write permissions. Do not paste a token into an OAuth connector URL.
Create a separate token per device so each can be revoked independently, and keep tokens out of source control, shell history, and screenshots.
Read covers products, schedules, exact occurrences, protocols, inventory, inventory item details, active alerts, containers, forecasts, history, and calculator math. Write covers confirmed product, protocol, dose, inventory, and container lifecycle changes. Use read-only unless you specifically want an AI client to make changes.
Before any write, the connected AI client reads the current record and states the exact product or item, the amount and unit (mcg/mg/IU, ml, or tablets), and the time or occurrence, then waits for your confirmation.
To revoke access, open Settings → Connector and tap Revoke next to the relevant Personal access token or OAuth connection. Revocation is immediate.
Skipping doses
If you need to pause a protocol temporarily without disabling it entirely, use the Skip doses option on the protocol card.
Skipping advances next_due forward by the number of doses you specify, without logging those doses or decrementing the vial. A skip event is recorded in History showing the skip period and reason (optional).
The protocol remains active — it will resume firing notifications and appearing on the dashboard from the new next_due date onward.
You can skip 1 to 10 doses at a time. For a longer break, consider setting an end date on the protocol and creating a new one when you resume.
History & events
The History page shows a unified, chronological log of everything that has happened in the app. Events are grouped by day and can be filtered and searched.
Select Dose timeline on a dashboard product card to chart logged doses over 7 days, 30 days, 90 days, 6 months, 1 year, all history, or a custom start and end date.
Peptides linked to the same catalog entry can combine their history with All variants. Manual and auto-logged doses are identified in point details. Skipped, overdue, and missed schedule occurrences use separate markers and counts without changing logged-dose totals.
When a custom range includes future dates, the current active schedule, titration, cycling, known skips, and protocol boundaries are used to show display-only projected doses. Solid points are logged history; hollow points and dashed lines are projected and never consume inventory or become dose history.
Select Show next planned doses again to extend the chart through another scheduled batch. The control stops when a finite protocol has no more valid occurrences. When both history and a projection are shown, a Past / Both / Future switch focuses the chart on whichever you want to read.
Tap or hover any marker to open its details — amount, time, manual or auto-log source, and any skip reason — in a panel below the chart. Status markers show logged, planned, skipped, missed, and overdue doses by shape and label, not colour alone.
mg and mcg history can be converted between display units. IU history always stays on a separate scale and is never converted to mass.
- Dose taken — every logged dose, manual or auto-logged
- Dose skipped — skip events with period and optional reason
- Vial reconstituted — reconstitution with BAC water volume
- Vial adjusted — manual remaining-amount corrections
- BAC consumed — BAC water used during reconstitution
- Syringe used — auto-deducted syringe per dose
- Inventory refilled — restocking an inventory item to full
- Inventory adjusted — quantity corrections made through the edit form (previous → new value shown)
- Protocol created / updated / removed — protocol lifecycle; update events can show before/after details and expandable change lists
- Notification sent / failed — delivery history for each reminder
- Dose auto-logged — auto-log events (visible under Notifications filter)
Use the filter tabs at the top of History to narrow to a category: All, Doses, Reconstitutions, Inventory, Protocols, Adjustments, or Notifications.
The search box filters by peptide name, inventory item name, dose notes, skip reason, notification error text, and event type label simultaneously.
Use the peptide dropdown to filter all event types by a specific peptide.
The Notifications filter shows the delivery log for every reminder — whether it succeeded, failed, and what channel it used. Failed events include a sanitised error message (no tokens or credentials are stored).
Auto-logged dose events appear only in the Notifications filter to avoid duplication with the "Dose taken" entries they generate (which appear in All and Doses).
Account & settings
The Settings page controls your profile, syringe preferences, notification channels, and data management.
Customize dashboard controls Dashboard sections and display details. Settings → Schedule export creates a one-time `.ics` file for the next 30 or 90 days of scheduled doses.
You can choose whether exported events include peptide names, dose details, and protocol notes. Notes are off by default, and vendor, batch, inventory, and account details are not included.
Set a display name and upload an optional profile photo. The display name replaces your email address in the header. Tapping the name in the header reveals the underlying email in a popover.
In Settings → Syringe, choose your syringe type. This affects all syringe IU calculations across the app, including:
- The log-dose dialog IU calculation
- Dose reminder notification content (IU marks in the message)
- Product card and protocol timeline displays
Presets: U-100 · 0.3 ml (30 IU max), U-100 · 0.5 ml, U-100 · 1.0 ml, U-40 · 1.0 ml. Custom values can also be entered.
In Settings → Data & account, you can:
- Delete history categories — remove specific event types (doses, inventory events, protocol events, notification logs) without deleting your products or protocols
- Delete all data — removes all your records (peptides, protocols, doses, inventory, history) but keeps your account
- Delete account — permanently removes your account and all associated data; this cannot be undone
All deletion operations require confirmation and are irreversible.