* 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.
172 lines
3.6 KiB
Markdown
172 lines
3.6 KiB
Markdown
# Running Apps
|
|
|
|
## Basic Run
|
|
|
|
```bash
|
|
infsh app run user/app-name --input input.json
|
|
```
|
|
|
|
## Inline JSON
|
|
|
|
```bash
|
|
infsh app run falai/flux-dev-lora --input '{"prompt": "a sunset over mountains"}'
|
|
```
|
|
|
|
## Version Pinning
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
infsh app sample falai/flux-dev-lora
|
|
```
|
|
|
|
Save to file:
|
|
|
|
```bash
|
|
infsh app sample falai/flux-dev-lora --save input.json
|
|
```
|
|
|
|
Then edit `input.json` and run:
|
|
|
|
```bash
|
|
infsh app run falai/flux-dev-lora --input input.json
|
|
```
|
|
|
|
## Workflow Example
|
|
|
|
### Image Generation with FLUX
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
- [Running Apps](https://inference.sh/docs/apps/running) - Complete running apps guide
|
|
- [Streaming Results](https://inference.sh/docs/api/sdk/streaming) - Real-time progress updates
|
|
- [Setup Parameters](https://inference.sh/docs/apps/setup-parameters) - Configuring app inputs
|