Files
hermes-agent/optional-skills/devops/cli/references/running-apps.md
Teknium 5ceed021dc feat(gateway): skill-aware slash commands, paginated /commands, Telegram 100-cap (#3934)
* feat(gateway): skill-aware slash commands, paginated /commands, Telegram 100-cap

Map active skills to Telegram's slash command menu so users can
discover and invoke skills directly. Three changes:

1. Telegram menu now includes active skill commands alongside built-in
   commands, capped at 100 entries (Telegram Bot API limit). Overflow
   commands remain callable but hidden from the picker. Logged at
   startup when cap is hit.

2. New /commands [page] gateway command for paginated browsing of all
   commands + skills. /help now shows first 10 skill commands and
   points to /commands for the full list.

3. When a user types a slash command that matches a disabled or
   uninstalled skill, they get actionable guidance:
   - Disabled: 'Enable it with: hermes skills config'
   - Optional (not installed): 'Install with: hermes skills install official/<path>'

Built on ideas from PR #3921 by @kshitijk4poor.

* chore: move 21 niche skills to optional-skills

Move specialized/niche skills from built-in (skills/) to optional
(optional-skills/) to reduce the default skill count. Users can
install them with: hermes skills install official/<category>/<name>

Moved skills (21):
- mlops: accelerate, chroma, faiss, flash-attention,
  hermes-atropos-environments, huggingface-tokenizers, instructor,
  lambda-labs, llava, nemo-curator, pinecone, pytorch-lightning,
  qdrant, saelens, simpo, slime, tensorrt-llm, torchtitan
- research: domain-intel, duckduckgo-search
- devops: inference-sh cli

Built-in skills: 96 → 75
Optional skills: 22 → 43

* fix: only include repo built-in skills in Telegram menu, not user-installed

User-installed skills (from hub or manually added) stay accessible via
/skills and by typing the command directly, but don't get registered
in the Telegram slash command picker. Only skills whose SKILL.md is
under the repo's skills/ directory are included in the menu.

This keeps the Telegram menu focused on the curated built-in set while
user-installed skills remain discoverable through /skills and /commands.
2026-03-30 10:57:30 -07:00

3.6 KiB

Running Apps

Basic Run

infsh app run user/app-name --input input.json

Inline JSON

infsh app run falai/flux-dev-lora --input '{"prompt": "a sunset over mountains"}'

Version Pinning

infsh app run user/app-name@1.0.0 --input input.json

Local File Uploads

The CLI automatically uploads local files when you provide a file path instead of a URL. Any field that accepts a URL also accepts a local path:

# Upscale a local image
infsh app run falai/topaz-image-upscaler --input '{"image": "/path/to/photo.jpg", "upscale_factor": 2}'

# Image-to-video from local file
infsh app run falai/wan-2-5-i2v --input '{"image": "./my-image.png", "prompt": "make it move"}'

# Avatar with local audio and image
infsh app run bytedance/omnihuman-1-5 --input '{"audio": "/path/to/speech.mp3", "image": "/path/to/face.jpg"}'

# Post tweet with local media
infsh app run x/post-create --input '{"text": "Check this out!", "media": "./screenshot.png"}'

Supported paths:

  • Absolute paths: /home/user/images/photo.jpg
  • Relative paths: ./image.png, ../data/video.mp4
  • Home directory: ~/Pictures/photo.jpg

Generate Sample Input

Before running, generate a sample input file:

infsh app sample falai/flux-dev-lora

Save to file:

infsh app sample falai/flux-dev-lora --save input.json

Then edit input.json and run:

infsh app run falai/flux-dev-lora --input input.json

Workflow Example

Image Generation with FLUX

# 1. Get app details
infsh app get falai/flux-dev-lora

# 2. Generate sample input
infsh app sample falai/flux-dev-lora --save input.json

# 3. Edit input.json
# {
#   "prompt": "a cat astronaut floating in space",
#   "num_images": 1,
#   "image_size": "landscape_16_9"
# }

# 4. Run
infsh app run falai/flux-dev-lora --input input.json

Video Generation with Veo

# 1. Generate sample
infsh app sample google/veo-3-1-fast --save input.json

# 2. Edit prompt
# {
#   "prompt": "A drone shot flying over a forest at sunset"
# }

# 3. Run
infsh app run google/veo-3-1-fast --input input.json

Text-to-Speech

# Quick inline run
infsh app run falai/kokoro-tts --input '{"text": "Hello, this is a test."}'

Task Tracking

When you run an app, the CLI shows the task ID:

Running falai/flux-dev-lora
Task ID: abc123def456

For long-running tasks, you can check status anytime:

# Check task status
infsh task get abc123def456

# Get result as JSON
infsh task get abc123def456 --json

# Save result to file
infsh task get abc123def456 --save result.json

Run Without Waiting

For very long tasks, run in background:

# Submit and return immediately
infsh app run google/veo-3 --input input.json --no-wait

# Check later
infsh task get <task-id>

Output

The CLI returns the app output directly. For file outputs (images, videos, audio), you'll receive URLs to download.

Example output:

{
  "images": [
    {
      "url": "https://cloud.inference.sh/...",
      "content_type": "image/png"
    }
  ]
}

Error Handling

Error Cause Solution
"invalid input" Schema mismatch Check infsh app get for required fields
"app not found" Wrong app name Check infsh app list --search
"quota exceeded" Out of credits Check account balance

Documentation