Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 30 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,24 @@ Highflame Documentation: [https://docs.highflame.ai/](https://docs.highflame.ai/

### Installation

**SDK:**

```bash
pip install highflame
```

**CLI:**

```bash
pip install highflame-cli
```

> **Note:** The CLI package (`highflame-cli`) depends on the SDK package (`highflame`), so installing the CLI will automatically install the SDK as well.

### Basic Usage

**Using the SDK:**

```python
from highflame import Highflame, Config
import os
Expand All @@ -38,6 +50,22 @@ response = client.query_route(
)
```

**Using the CLI:**

```bash
# Authenticate
highflame auth

# List routes
highflame route list

# Create a route
highflame route create --name my_route --file route.json
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The example for highflame route create uses a --file route.json argument. Based on the CLI implementation in highflame_cli/cli.py, this argument does not seem to exist. The command expects --models and --config arguments with JSON strings. This discrepancy will confuse users. Please update the documentation to provide a correct example. Alternatively, consider implementing the --file argument in the CLI to improve usability.


# Get route details
highflame route get --name my_route
```

---

## What Changed
Expand Down Expand Up @@ -183,7 +211,7 @@ javelin routes list

```bash
highflame auth
highflame routes list
highflame route list
```

### Exception Handling Changes
Expand Down Expand Up @@ -549,7 +577,7 @@ logger.setLevel(logging.INFO)

### CLI Improvements

- [ ] **CLI Separation**: Separate CLI into its own `highflame-cli` package. Create separate repository, package, and PyPI distribution.
- [x] **CLI Separation**: Separate CLI into its own `highflame-cli` package. Package structure separated, ready for independent distribution.

- [ ] **CLI Error Messages**: Improve CLI error messages with troubleshooting hints and actionable guidance.

Expand Down
2 changes: 2 additions & 0 deletions highflame_cli/_internal/commands.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import json
from pathlib import Path

# CLI imports from the public SDK API - this ensures CLI works as a separate package
# that depends on the highflame SDK package
from highflame.client import Highflame
from highflame.exceptions import (
BadRequest,
Expand Down
11 changes: 4 additions & 7 deletions CLI_PYPROJECT.toml → highflame_cli/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
# This file shows what the future CLI-only package pyproject.toml would look like
# Once CLI is separated into its own package: highflame-cli
# This serves as a reference for the CLI package separation plan

[tool.poetry]
name = "highflame-cli"
version = "2.0.0"
description = "Command-line interface for Highflame - LLM Gateway Management"
authors = ["Sharath Rajasekar <sharath@highflame.com>"]
readme = "README.md"
readme = "../README.md"
license = "Apache-2.0"
homepage = "https://highflame.com"
repository = "https://github.com/highflame-ai/highflame-cli"
repository = "https://github.com/highflame-ai/highflame-python"
keywords = ["cli", "llm", "gateway", "ai", "command-line"]
packages = [
{ include = "highflame_cli" },
{ include = "highflame_cli", from = ".." },
]

[tool.poetry.scripts]
Expand Down
4 changes: 0 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,9 @@ homepage = "https://highflame.com"
repository = "https://github.com/highflame-ai/highflame-python"
keywords = ["llm", "gateway", "ai", "api", "routing"]
packages = [
{ include = "highflame_cli" },
{ include = "highflame" },
]

[tool.poetry.scripts]
highflame = "highflame_cli.cli:main"

[tool.poetry.dependencies]
python = "^3.9"
httpx = "^0.27.2"
Expand Down