---
title: "Deploy Cycling Coach"
description: "BYOK single-tenant Telegram cycling coach with persistent /data."
category: "Bots"
url: https://railway.com/deploy/cycling-coach
---

# Deploy Cycling Coach

BYOK single-tenant Telegram cycling coach with persistent /data.

**[Deploy Cycling Coach on Railway](https://railway.com/template/cycling-coach)**

- **Creator:** Yerzhan's Projects
- **Category:** Bots
- **Total deploys:** 1

## Template content

### cycling-coach

- **Image:** ghcr.io/yerzhansa/enduragent:stable

## Documentation

# Deploy and Host Cycling Coach on Railway

Cycling Coach is an open-source, bring-your-own-key Telegram cycling coach for cyclists. It syncs with intervals.icu, reads your training data, and uses your chosen LLM provider to answer training questions, inspect recent load, and help plan workouts.

## About Hosting Cycling Coach

This Railway template deploys your own private Cycling Coach bot from `ghcr.io/yerzhansa/cycling-coach:stable`. Railway keeps it running 24/7, so your computer does not need to stay on. Telegram updates are received by outbound long polling, so no public HTTP endpoint is required. Railway mounts persistent state at `/data`, and image auto-updates are enabled.

Railway hosts the container and volume in your Railway account. The bot reads your Railway variables, then talks directly to Telegram, intervals.icu, and your selected LLM provider. The project maintainer does not run a shared backend and does not receive your API keys, athlete data, Telegram messages, or volume contents. Your hosting and billing relationship is with Railway. Railway currently lists Hobby as the practical minimum for always-on apps: $5 minimum usage/month, including $5 monthly usage credits.

## Common Use Cases

- Run a private AI cycling coach in Telegram without managing a VPS.
- Connect intervals.icu activity data to coaching conversations.
- Keep a persistent, single-tenant bot that updates through Railway image auto-updates.

## How to Deploy

1. Click Deploy Now.
2. Fill the required Railway variables below.
3. Wait for Railway to deploy the service.
4. Open Telegram and send `/start` to the bot you created with BotFather.

Railway does not run `cycling-coach setup`; the variables below are the setup. If a value is wrong, edit the service variables in Railway and redeploy or restart the service.

## Dependencies for Cycling Coach Hosting

Before you click Deploy, prepare three accounts: one LLM provider account, intervals.icu, and Telegram.

| Variable | What to enter | Where to get it |
| --- | --- | --- |
| `LLM_PROVIDER` | One lower-case provider id: `anthropic`, `openai`, `google`, `deepseek`, `qwen`, `minimax`, `kimi`, `zai`, or `openrouter`. Start with `anthropic` if unsure. | Pick the provider that issued your `LLM_API_KEY`. ChatGPT Plus login is not supported in Railway because it needs an interactive browser login. |
| `LLM_API_KEY` | API key for the provider in `LLM_PROVIDER`. | [Anthropic Console](https://console.anthropic.com/), [OpenAI Platform](https://platform.openai.com/), [Google AI Studio](https://aistudio.google.com/), [DeepSeek Platform](https://platform.deepseek.com/), Alibaba Cloud DashScope, [MiniMax Platform](https://platform.minimaxi.com/), [Moonshot AI](https://platform.moonshot.ai/), [Z.AI](https://z.ai/), or [OpenRouter](https://openrouter.ai/). |
| `INTERVALS_API_KEY` | Your intervals.icu API key. | [intervals.icu/settings](https://intervals.icu/settings) > Developer Settings. |
| `INTERVALS_ATHLETE_ID` | Your intervals.icu athlete id, usually like `i12345`. Include the leading `i` when intervals.icu shows one. | Open your intervals.icu profile/settings URL and copy the athlete id from the URL or profile details. |
| `TELEGRAM_BOT_TOKEN` | Token for the Telegram bot users will message. | In Telegram, open [@BotFather](https://t.me/BotFather), run `/newbot`, choose a name and username, then copy the token. |
| `CYCLING_COACH_OPERATOR_ID` | Your numeric Telegram user id, for example `123456789`. This is not the bot token and not the bot username. | In Telegram, message a helper bot such as [@userinfobot](https://t.me/userinfobot) and copy your numeric id. Only this Telegram user is allowed to talk to your bot by default. |

### Deployment Dependencies

- Source and docs: https://github.com/yerzhansa/cycling-coach
- Docker image: https://ghcr.io/yerzhansa/cycling-coach
- intervals.icu settings: https://intervals.icu/settings
- Telegram BotFather: https://t.me/BotFather

## Why Deploy Cycling Coach on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Cycling Coach on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

## Similar templates

- [Telegram JavaScript Bot](https://railway.com/deploy/5lRkWa) — A template for Telegram bot in JavaScript using grammY
- [Cobalt Tools [Updated Aug ’26]](https://railway.com/deploy/cobalt) — Cobalt Tools [Aug ’26] (Media Downloader, Converter & Automation) Self Host
- [Telegram Gateway](https://railway.com/deploy/railway-telegram-gateway) — Multi-bot Telegram webhook gateway with WebSocket event streaming

Open this page in a browser: https://railway.com/deploy/cycling-coach
