Skip to content

Commit 0d1bb67

Browse files
Merge remote-tracking branch 'origin/main' into codex/pr6160-fixes
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
2 parents a389722 + 13e8e80 commit 0d1bb67

42 files changed

Lines changed: 24216 additions & 3658 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ Install and run a OGX server:
6060
curl -LsSf https://github.com/ogx-ai/ogx/raw/main/scripts/install.sh | bash
6161

6262
# Or install via uv
63-
uv pip install ogx[starter]
63+
uv pip install ogx
6464

65-
# Start the server (uses the starter distribution with Ollama)
66-
uv run ogx run starter
65+
# Start the server (auto-detects providers from the environment)
66+
uv run ogx go
6767
```
6868

6969
Then connect with any OpenAI, Anthropic, or Google GenAI client — [Python](https://github.com/openai/openai-python), [TypeScript](https://github.com/openai/openai-node), [curl](https://platform.openai.com/docs/api-reference), or any framework that speaks these APIs.

docs/docs/api-openai/provider_matrix.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ inference provider, based on integration test results.
2121
|----------|--------|---------|---------|----------|
2222
| azure | 111 | 111 | 0 | 82% |
2323
| bedrock | 27 | 27 | 0 | 20% |
24-
| ollama | 2 | 2 | 0 | 2% |
24+
| ollama | 3 | 3 | 0 | 2% |
2525
| openai | 136 | 136 | 0 | 100% |
2626
| vertexai | 70 | 70 | 0 | 52% |
2727
| vllm | 3 | 3 | 0 | 2% |
@@ -35,10 +35,10 @@ Models, endpoints, and versions used during test recordings.
3535
|----------|----------|----------|--------------|
3636
| azure | gpt-4o | llama-stack-test.openai.azure.com, lls-test.openai.azure.com, ogx-test.openai.azure.com | openai sdk: 2.43.0 |
3737
| bedrock | openai.gpt-oss-20b-1:0 | bedrock-runtime.us-west-2.amazonaws.com | openai sdk: 2.30.0 |
38-
| ollama | deepseek-r1:1.5b || openai sdk: 2.30.0 |
38+
| ollama | deepseek-r1:1.5b || openai sdk: 2.43.0 |
3939
| openai | gpt-4o, o4-mini, text-embedding-3-small | api.openai.com | openai sdk: 2.43.0 |
4040
| vertexai | publishers/google/models/gemini-2.0-flash || openai sdk: 2.5.0, provider: vertexai |
41-
| vllm | Qwen/Qwen3-0.6B || openai sdk: 2.5.0, vllm server: 0.18.1rc1.dev197+g0e9358c11 |
41+
| vllm | Qwen/Qwen3-0.6B || openai sdk: 2.5.0, vllm server: 0.17.2rc1.dev79+g5ce2d10e4 |
4242
| watsonx | meta-llama/llama-3-3-70b-instruct | us-south.ml.cloud.ibm.com | openai sdk: 2.5.0 |
4343

4444
## Basic Responses
@@ -165,7 +165,7 @@ Models, endpoints, and versions used during test recordings.
165165

166166
| Feature | azure | bedrock | ollama | openai | vertexai | vllm | watsonx |
167167
| --- | --- | --- | --- | --- | --- | --- | --- |
168-
| reasoning basic streaming ||| ⏭️ |||||
168+
| reasoning basic streaming ||| |||||
169169
| reasoning multi turn passthrough | ⏭️ |||| ⏭️ |||
170170
| reasoning no summary without request | ⏭️ | ⏭️ | ⏭️ || ⏭️ | ⏭️ ||
171171
| reasoning non streaming | ⏭️ |||| ⏭️ |||

docs/docs/distributions/self_hosted_distro/passthrough.md

Lines changed: 0 additions & 32 deletions
This file was deleted.

docs/docs/getting_started/quickstart.mdx

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,15 @@ Install [Ollama](https://ollama.com/download), then pull a model and start the s
1919

2020
```bash
2121
ollama pull llama3.2:3b
22-
export OLLAMA_URL=http://localhost:11434/v1
23-
uvx --from 'ogx[starter]' ogx run starter
22+
uvx ogx go
2423
```
2524

2625
</TabItem>
2726
<TabItem value="openai" label="OpenAI">
2827

2928
```bash
3029
export OPENAI_API_KEY=sk-xxx
31-
uvx --from 'ogx[starter]' ogx run starter
30+
uvx ogx go
3231
```
3332

3433
</TabItem>
@@ -52,13 +51,14 @@ The `uvx` command above is great for trying things out. For a real project, inst
5251

5352
```bash
5453
uv init my-ai-app && cd my-ai-app
55-
uv add 'ogx[starter]' openai
56-
export OLLAMA_URL=http://localhost:11434/v1
57-
uv run ogx run starter
54+
uv add ogx openai
55+
uv run ogx go
5856
```
5957
:::
6058

61-
The server is now running at `http://localhost:8321`. You can use any OpenAI-compatible client.
59+
The server is now running at `https://localhost:8321`. You can use any OpenAI-compatible client.
60+
61+
OGX is secure by default and listens on https. Passing `--insecure` forces the server to listen on http.
6262

6363
## Verify it works
6464

@@ -68,16 +68,17 @@ Before writing any code, confirm the server is healthy and models are registered
6868
<TabItem value="curl" label="curl" default>
6969

7070
```bash
71-
curl -s http://localhost:8321/v1/models | python -m json.tool
71+
curl -k -s https://localhost:8321/v1/models | python -m json.tool
7272
```
7373

7474
</TabItem>
7575
<TabItem value="python" label="Python">
7676

7777
```python
78+
import httpx
7879
from openai import OpenAI
7980

80-
client = OpenAI(base_url="http://localhost:8321/v1", api_key="fake")
81+
client = OpenAI(base_url="http://localhost:8321/v1", api_key="fake", http_client=httpx.Client(verify=False))
8182

8283
for model in client.models.list():
8384
print(model.id)
@@ -108,9 +109,10 @@ If the list is empty or the command fails, check the [Troubleshooting](#troubles
108109
Open a new terminal and run:
109110

110111
```python title="app.py"
112+
import httpx
111113
from openai import OpenAI
112114

113-
client = OpenAI(base_url="http://localhost:8321/v1", api_key="fake")
115+
client = OpenAI(base_url="https://localhost:8321/v1", api_key="fake", http_client=httpx.Client(verify=False))
114116

115117
response = client.responses.create(
116118
model="ollama/llama3.2:3b",
@@ -128,9 +130,10 @@ pip install openai && python app.py
128130
Upload a file, create a vector store, and ask questions about it:
129131

130132
```python
133+
import httpx
131134
from openai import OpenAI
132135

133-
client = OpenAI(base_url="http://localhost:8321/v1", api_key="fake")
136+
client = OpenAI(base_url="http://localhost:8321/v1", api_key="fake", http_client=httpx.Client(verify=False))
134137

135138
# Upload a document
136139
file = client.files.create(
@@ -166,7 +169,7 @@ That's it. Same OpenAI SDK, local model, your own vector store.
166169
If you see `Address already in use`, another process is using port 8321. Either stop it or run on a different port:
167170

168171
```bash
169-
uvx --from 'ogx[starter]' ogx run starter --port 8322
172+
uvx ogx go --port 8322
170173
```
171174

172175
</details>

docs/docs/index.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,13 @@ curl -LsSf https://github.com/ogx-ai/ogx/raw/main/scripts/install.sh | bash
113113
pip install ogx
114114

115115
# Start the server
116-
ogx stack run
116+
uv run ogx go --insecure
117117
```
118118

119119
:::tip
120120
OGX works with any OpenAI-compatible client. Point your existing code at `http://localhost:8321/v1` and you're ready to go.
121+
122+
OGX is secure by default. `--insecure` forces the server to listen on http. By default it runs on https with a self-signed cert. You'll have to skip cert verification or trust the automatically generated cert.
121123
:::
122124

123125
[Quick Start Guide](/docs/getting_started/quickstart) | [OpenAI API Compatibility](./api-openai) | [GitHub](https://github.com/ogx-ai/ogx)

docs/docs/providers/inference/remote_passthrough.mdx

Lines changed: 0 additions & 50 deletions
This file was deleted.

docs/src/components/InstallBlock/index.jsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@ import styles from './styles.module.css';
44
const EXAMPLES = [
55
{
66
label: 'Server',
7-
command: "uvx --from 'ogx[starter]' ogx run starter",
7+
command: "uvx ogx go",
88
tokens: [
99
{ text: 'uvx', style: 'tokenBinary' },
10-
{ text: '--from', style: 'tokenFlag' },
11-
{ text: "'ogx[starter]'", style: 'tokenPackage' },
1210
{ text: 'ogx', style: 'tokenCommand' },
13-
{ text: 'stack', style: 'tokenSub' },
14-
{ text: 'run', style: 'tokenSub' },
15-
{ text: 'starter', style: 'tokenAccent' },
11+
{ text: 'go', style: 'tokenSub' },
1612
],
1713
},
1814
{

scripts/generate_target_models_docs.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@
7474
"meta",
7575
"nvidia",
7676
"oci",
77-
"passthrough",
7877
"runpod",
7978
"sambanova",
8079
}

src/ogx/cli/letsgo.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# the root directory of this source tree.
66

77
import argparse
8+
import warnings
89
from typing import Any
910

1011
from ogx.cli.stack.lets_go import add_letsgo_arguments, run_letsgo_cmd
@@ -14,12 +15,33 @@
1415
class LetsGo(Subcommand):
1516
"""Auto-detect providers, generate runtime config, and start the stack."""
1617

18+
def __init__(self, subparsers: Any) -> None:
19+
super().__init__()
20+
self.parser = subparsers.add_parser(
21+
"go",
22+
prog="ogx go",
23+
description="Auto-detect providers and start the stack",
24+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
25+
)
26+
self._add_arguments()
27+
self.parser.set_defaults(func=self._run_cmd)
28+
29+
def _add_arguments(self) -> None:
30+
add_letsgo_arguments(self.parser)
31+
32+
def _run_cmd(self, args: argparse.Namespace) -> None:
33+
run_letsgo_cmd(args, self.parser)
34+
35+
36+
class LetsGoDeprecated(Subcommand):
37+
"""Backward-compatible alias for 'ogx go' (deprecated)."""
38+
1739
def __init__(self, subparsers: Any) -> None:
1840
super().__init__()
1941
self.parser = subparsers.add_parser(
2042
"letsgo",
2143
prog="ogx letsgo",
22-
description="Auto-detect providers and start the stack",
44+
description="Auto-detect providers and start the stack (deprecated, use 'ogx go' instead)",
2345
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
2446
)
2547
self._add_arguments()
@@ -29,4 +51,9 @@ def _add_arguments(self) -> None:
2951
add_letsgo_arguments(self.parser)
3052

3153
def _run_cmd(self, args: argparse.Namespace) -> None:
54+
warnings.warn(
55+
"'ogx letsgo' is deprecated and will be removed in a future release. Use 'ogx go' instead.",
56+
FutureWarning,
57+
stacklevel=1,
58+
)
3259
run_letsgo_cmd(args, self.parser)

src/ogx/cli/ogx.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
setup_logging()
1414

1515
from .connect import ConnectParser # type: ignore[attr-defined]
16-
from .letsgo import LetsGo
16+
from .letsgo import LetsGo, LetsGoDeprecated
1717
from .run import Run
1818
from .stack import StackParser # type: ignore[attr-defined]
1919
from .stack.utils import print_subcommand_description
@@ -37,6 +37,7 @@ def __init__(self) -> None:
3737

3838
# Add sub-commands
3939
LetsGo.create(subparsers)
40+
LetsGoDeprecated.create(subparsers)
4041
Run.create(subparsers)
4142
StackParser.create(subparsers)
4243
ConnectParser.create(subparsers)

0 commit comments

Comments
 (0)