Ctrl K
ComunidadGuías…

CLAUDE.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# CLAUDE.md — Runtipi App Store

> AI-consumable project documentation for GeiserX/runtipi-appstore.

## Project Overview

Community [Runtipi](https://runtipi.io/) app store containing 17 self-hosted Docker applications by [GeiserX](https://github.com/GeiserX). Users add this store to their Runtipi instance via Settings > App Stores.

## Architecture

```
apps/
  <app-id>/
    config.json          # App metadata, form fields, categories
    docker-compose.yml   # Docker Compose with x-runtipi extensions
    metadata/
      description.md     # Long description for Runtipi UI
      logo.jpg           # 512x512 square logo
  app-info-schema.json   # JSON Schema for config.json validation
```

## Key Conventions

- Each app folder name MUST match the `id` field in its `config.json`
- Docker images are from Docker Hub (`drumsergio/*`)
- All compose files use `x-runtipi` dynamic compose format (schema_version 2)
- Web UI apps declare `x-runtipi: is_main: true` + `internal_port` on the main service
- Headless apps omit `is_main` and set `no_gui: true` in config.json
- Runtipi handles Traefik routing and networking from `x-runtipi` metadata — no manual labels
- Template variables: `${APP_DATA_DIR}`, `${APP_PORT}`, `${APP_DOMAIN}`, `${TZ}`, `${APP_PROTOCOL}`
- Form fields generate environment variables referenced in compose
- Logos are 512x512 JPEG, 1:1 aspect ratio
- All image tags are pinned to specific versions (no `:latest`)
- `min_tipi_version` is set to `4.5.0` (required for x-runtipi YAML support)

## Apps Included

| App ID | Source Repo | Web UI |
|--------|-------------|--------|
| telegram-archive | Telegram-Archive | Yes (port 8000) |
| genieacs | genieacs-container | Yes (port 3000) |
| lynxprompt | LynxPrompt | Yes (port 3000) |
| pumperly | Pumperly | Yes (port 3000) |
| cashpilot | CashPilot | Yes (port 8080) |
| paperless-telegram-bot | paperless-telegram-bot | No |
| telegram-slskd-bot | telegram-slskd-local-bot | No |
| telegram-delay-cloner | telegram-delay-channel-cloner | No |
| jellyfin-telegram-sync | jellyfin-telegram-channel-sync | No |
| jellyfin-encoder | jellyfin-encoder | No |
| audio-transcode-watcher | audio-transcode-watcher | No |
| nginx-mailer | nginx-mailer | Yes (port 80) |
| way-cms | Way-CMS | Yes (port 5000) |
| epublangmerger | ePubLangMerger | Yes (port 3838) |
| duplicacy-exporter | duplicacy-exporter | No (Prometheus metrics on 9750) |
| akou | akou | Yes (port 8476) |
| vettarr | vettarr | Yes (port 4850) |

## Adding a New App

1. Create `apps/<id>/` directory
2. Add `config.json` following `app-info-schema.json`
3. Add `docker-compose.yml` with `x-runtipi: schema_version: 2` top-level and `is_main`/`internal_port` on main service
4. Add `metadata/description.md` and `metadata/logo.jpg`
5. Ensure `id` matches folder name
6. Test with Runtipi before committing

*Generated by [LynxPrompt](https://lynxprompt.com) CLI*


<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:6cd5cc61 -->
## Beads Issue Tracker

This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full workflow context and commands.

### Quick Reference

```bash
bd ready              # Find available work
bd show <id>          # View issue details
bd update <id> --claim  # Claim work
bd close <id>         # Complete work
```

### Rules

- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
- Run `bd prime` for detailed command reference and session close protocol
- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files

**Architecture in one line:** issues live in a local Dolt DB; sync uses `refs/dolt/data` on your git remote; `.beads/issues.jsonl` is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.

## Agent Context Profiles

The managed Beads block is task-tracking guidance, not permission to override repository, user, or orchestrator instructions.

- **Conservative (default)**: Use `bd` for task tracking. Do not run git commits, git pushes, or Dolt remote sync unless explicitly asked. At handoff, report changed files, validation, and suggested next commands.
- **Minimal**: Keep tool instruction files as pointers to `bd prime`; use the same conservative git policy unless active instructions say otherwise.
- **Team-maintainer**: Only when the repository explicitly opts in, agents may close beads, run quality gates, commit, and push as part of session close. A current "do not commit" or "do not push" instruction still wins.

## Session Completion

This protocol applies when ending a Beads implementation workflow. It is subordinate to explicit user, repository, and orchestrator instructions.

1. **File issues for remaining work** - Create beads for anything that needs follow-up
2. **Run quality gates** (if code changed) - Tests, linters, builds
3. **Update issue status** - Close finished work, update in-progress items
4. **Handle git/sync by active profile**:
   ```bash
   # Conservative/minimal/default: report status and proposed commands; wait for approval.
   git status

   # Team-maintainer opt-in only, unless current instructions forbid it:
   git pull --rebase
   git push
   git status
   ```
5. **Hand off** - Summarize changes, validation, issue status, and any blocked sync/commit/push step

**Critical rules:**
- Explicit user or orchestrator instructions override this Beads block.
- Do not commit or push without clear authority from the active profile or the current user request.
- If a required sync or push is blocked, stop and report the exact command and error.
<!-- END BEADS INTEGRATION -->

## Where the tracker syncs

This repo is public, so its tracker syncs only to the private remote named by `sync.remote` in `.beads/config.yaml`. The block above says sync uses "your git remote". Here that never means this GitHub repo. Don't add it as a Dolt remote and don't push `refs/dolt/*` to it.