Skip to content

fix(mesh): stop advertising 0.0.0.0 to peers - #883

Merged
slin1237 merged 1 commit into
smg-project:mainfrom
jshanson7:fix/mesh-discovery
Mar 26, 2026
Merged

slin1237 merged 1 commit into
smg-project:mainfrom
jshanson7:fix/mesh-discovery

Conversation

@jshanson7

@jshanson7 jshanson7 commented Mar 24, 2026 •

Copy link
Copy Markdown
Contributor

Description

Problem

Mesh nodes used the same address for both listening and peer advertisement. When --mesh-host was left at 0.0.0.0, gossip could propagate 0.0.0.0:<port> back into cluster state and cause peers to dial an unroutable address.

Solution

Split mesh bind and advertise addresses. The mesh server now listens on a bind address but advertises a separate routable address to peers. Add --mesh-advertise-host to the Rust and Python entrypoints, reject unspecified advertised addresses, and update HA docs/examples accordingly.

Changes

  • split mesh bind vs advertise addresses in mesh startup and gossip replies
  • add --mesh-advertise-host to the Rust CLI and Python router args
  • reject mesh configs that would advertise 0.0.0.0
  • preserve positional compatibility for the PyO3 Router(...) constructor
  • update HA quick-start and Python entrypoint examples
  • add a regression test covering advertised address in ping replies

Test Plan

  • cargo +nightly fmt --all --check
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo test -p smg-mesh test_ping_advertises_configured_address -- --nocapture
  • cargo check -p smg -p smg-python --all-targets
  • pytest -v -s tests/test_arg_parser.py

Summary by CodeRabbit

  • New Features

    • Added --mesh-advertise-host and support for separate bind vs. advertise addresses so nodes can bind to one address and advertise a routable address; startup and service discovery use the advertised port.
  • Bug Fixes / Validation

    • Validates advertise address is routable/non-unspecified and surfaces clear configuration errors when not.
  • Documentation

    • Updated docs, examples, and Kubernetes snippets to show bind vs advertise usage and CLI option.
  • Tests

    • Added/updated tests for parsing and behavior of the advertise-host option and defaults.

@coderabbitai

coderabbitai Bot commented Mar 24, 2026 •

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Split mesh addressing into bind vs. advertise roles: added mesh_advertise_host option, threaded it through Python bindings and CLI parsing, parse/validate separate bind_addr and advertise_addr, updated Rust mesh services/controllers/gossip to use both addresses, and updated docs/tests accordingly.

Changes

Cohort / File(s) Summary
Python Router Bindings
bindings/python/src/lib.rs
Added mesh_advertise_host: Option<String> to Router.__init__, added parse_mesh_socket_addr, and compute/validate bind_addr vs advertise_addr (reject unspecified advertise IPs).
Python CLI Args & Tests
bindings/python/src/smg/router_args.py, bindings/python/tests/test_arg_parser.py
Added RouterArgs.mesh_advertise_host and --{prefix}mesh-advertise-host CLI flag; tests updated to assert default None and parse behavior.
Model Gateway CLI & Startup
model_gateway/src/main.rs, model_gateway/src/server.rs
Added CLI option and parse_mesh_socket_addr; introduced build_mesh_server_config() producing bind_addr/advertise_addr with validation; startup uses advertise_addr.port() for discovery.
Rust Mesh Core Services
crates/mesh/src/service.rs
Replaced self_addr with bind_addr + advertise_addr across config/builder/server; NodeState.address set from advertise_addr; listener validation updated; new unit test ensures advertised address used.
Rust Gossip / Ping
crates/mesh/src/ping_server.rs
GossipService::new signature now accepts listen_addr and advertise_addr; server binds to listen_addr and advertises advertise_addr in NodeUpdate.
Rust Controller Snapshot Flow
crates/mesh/src/controller.rs
Updated GossipService::new call in snapshot handling to pass both listen and advertise addresses (constructor arity changed).
Docs
crates/mesh/src/README.md, docs/concepts/architecture/high-availability.md, docs/reference/configuration.md
Documentation and examples updated to describe bind vs advertise addresses, add --mesh-advertise-host CLI docs and Kubernetes example using pod IP.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant CLI as CLI
    participant Python as Python Entrypoint
    participant Gateway as ModelGateway
    participant Mesh as MeshServer
    participant Gossip as GossipService

    CLI->>Python: pass --mesh-host & --mesh-advertise-host
    Python->>Gateway: forward parsed bind_addr & advertise_addr
    Gateway->>Mesh: start(bind_addr, advertise_addr, init_peer)
    Mesh->>Gossip: new(listen_addr=bind_addr, advertise_addr)
    Gossip->>Peers: advertise(advertise_addr) / respond to pings
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • tonyluj
  • CatherineSue
  • llfl
  • key4ng
  • slin1237
  • gongwei-130

Poem

🐰 I hop between bind and advertise,
I tuck my routable IP in my sleeve,
One ear to listen, one ear to tell,
I point the peers where I dwell,
Mesh hums — a rabbit’s quiet eve.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 51.61% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix(mesh): stop advertising 0.0.0.0 to peers' accurately summarizes the primary issue being fixed: preventing mesh nodes from advertising unroutable 0.0.0.0 addresses to peers.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added documentation Improvements or additions to documentation python-bindings Python bindings changes tests Test changes model-gateway Model gateway crate changes labels Mar 24, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves a critical networking issue where mesh nodes, when configured to bind to the unspecified address 0.0.0.0, would incorrectly advertise this unroutable address to other peers, leading to communication failures within the cluster. The core solution involves decoupling the mesh server's listening address from the address it advertises to its peers. This allows a node to bind to 0.0.0.0 for local listening flexibility while explicitly providing a routable IP address for other mesh participants to connect to, thereby improving the reliability and configuration clarity of mesh networking.

Highlights

  • Separate Bind and Advertise Addresses: Introduced distinct bind and advertise addresses for mesh servers, resolving an issue where unroutable 0.0.0.0 addresses were being propagated to peers.
  • New Configuration Option: Added a new command-line argument, --mesh-advertise-host, to explicitly define the routable address for mesh peers in both the Rust CLI and Python router arguments.
  • Address Validation: Implemented validation to reject unspecified (e.g., 0.0.0.0) advertised addresses, ensuring that mesh nodes always broadcast a valid, routable IP.
  • Python API Compatibility: Preserved positional compatibility for the PyO3 Router(...) constructor while integrating the new mesh_advertise_host parameter.
  • Documentation and Examples Update: Revised High Availability documentation and Python entrypoint examples to reflect the new mesh configuration options and best practices.
  • Regression Test: Added a regression test to verify that ping replies correctly advertise the configured address, ensuring the fix behaves as expected.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

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.

Code Review

This pull request introduces a new mesh_advertise_host configuration option, allowing users to specify a routable IP address for mesh communication that is distinct from the bind address (mesh_host). This is particularly important when the mesh server binds to an unspecified address like 0.0.0.0. The changes include updates to the Router struct, CLI arguments, configuration parsing, and documentation across Python bindings, Rust crates, and CLI tools. A new validation ensures that the advertised address is always a specified and routable IP. The review comments suggest improving the clarity of error messages related to unspecified advertise addresses.

Comment thread bindings/python/src/lib.rs
Comment thread model_gateway/src/main.rs
@jshanson7
jshanson7 force-pushed the fix/mesh-discovery branch from 5c699fe to e84ab67 Compare March 24, 2026 16:39
@jshanson7
jshanson7 marked this pull request as ready for review March 24, 2026 17:52
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Repo admins can enable using credits for code reviews in their settings.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/concepts/architecture/high-availability.md`:
- Around line 171-177: The peer bootstrap addresses are inconsistent: examples
set --mesh-advertise-host to explicit IPs but --mesh-peer-urls still use
hostnames (node1/node2); update the --mesh-peer-urls values to use the
corresponding IP addresses (e.g., replace "node1:39527"/"node2:39527" with the
matching advertise-host IPs and ports) so copy/paste setups without DNS work
reliably, and apply the same change to the other occurrence of the same example.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: c6ba2355-7aab-4728-8909-fbe335efc7a5

📥 Commits

Reviewing files that changed from the base of the PR and between 3ebc8a3 and e84ab67.

📒 Files selected for processing (11)
  • bindings/python/src/lib.rs
  • bindings/python/src/smg/router_args.py
  • bindings/python/tests/test_arg_parser.py
  • crates/mesh/src/README.md
  • crates/mesh/src/controller.rs
  • crates/mesh/src/ping_server.rs
  • crates/mesh/src/service.rs
  • docs/concepts/architecture/high-availability.md
  • docs/reference/configuration.md
  • model_gateway/src/main.rs
  • model_gateway/src/server.rs

Comment thread docs/concepts/architecture/high-availability.md
@jshanson7
jshanson7 force-pushed the fix/mesh-discovery branch from e84ab67 to 5669e02 Compare March 24, 2026 18:17

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/reference/configuration.md (1)

388-399: ⚠️ Potential issue | 🟡 Minor

Update all HA command examples to include --mesh-advertise-host.

This section was updated, but the later “High-Availability Mesh” examples still omit --mesh-advertise-host. With the new validation, those example commands can fail when --mesh-host remains 0.0.0.0.

📘 Suggested doc patch
 # Router 1
 smg \
   --enable-mesh \
   --mesh-server-name router-1 \
+  --mesh-advertise-host 192.168.1.10 \
   --mesh-port 39527 \
   --mesh-peer-urls 192.168.1.11:39527 \
   --worker-urls http://worker1:8000

 # Router 2
 smg \
   --enable-mesh \
   --mesh-server-name router-2 \
+  --mesh-advertise-host 192.168.1.11 \
   --mesh-port 39527 \
   --mesh-peer-urls 192.168.1.10:39527 \
   --worker-urls http://worker2:8000
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/configuration.md` around lines 388 - 399, Update all
High-Availability Mesh example commands to include the --mesh-advertise-host
flag when --mesh-host is an unspecified bind address (e.g., 0.0.0.0);
specifically edit the example command blocks (the Example: block and any
"High-Availability Mesh" examples) to add a sensible advertised address
(matching the node’s routable IP) using --mesh-advertise-host so they won't fail
under the new validation that requires an advertise host when --mesh-host is
unspecified.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bindings/python/src/lib.rs`:
- Around line 1170-1174: The error text produced when
advertise_addr.ip().is_unspecified() uses advertise_field and advertise_host and
currently tells users to "set {advertise_field} to a routable node IP", which is
confusing when mesh_advertise_host is unset and mesh_host is 0.0.0.0; update the
message in that branch to explicitly recommend setting mesh_advertise_host
(e.g., "set mesh_advertise_host to a routable node IP") so users aren’t prompted
to change mesh_host. Locate the conditional around
advertise_addr.ip().is_unspecified() and replace or augment the format string
that references advertise_field/advertise_host to always suggest
mesh_advertise_host as the actionable fix.

In `@docs/concepts/architecture/high-availability.md`:
- Around line 171-179: The Node 2 example command in the high-availability doc
omits the --mesh-host option present in Node 1 and Node 3; update the Node 2 smg
command (the block starting with "smg --enable-mesh" and the mesh flags) to
include --mesh-host 0.0.0.0 so it matches the other node examples and prevents
copy-paste confusion.
- Around line 207-209: Insert a blank line immediately before the fenced code
block that contains the SMG_MESH_* environment variable exports (the block that
starts with the lines "export SMG_MESH_ADVERTISE_HOST=10.0.0.11" etc.); update
the docs/concepts/architecture/high-availability.md so there is an empty line
separating the preceding paragraph and the code fence to satisfy the MD031 rule
and ensure proper Markdown rendering.

In `@model_gateway/src/main.rs`:
- Around line 839-848: In the branch that checks
advertise_addr.ip().is_unspecified() (the code creating a
ConfigError::InvalidValue using advertise_field and advertise_host), change the
error message so it always recommends setting --mesh-advertise-host to a
routable node IP (instead of suggesting --mesh-host when mesh_host is 0.0.0.0);
update the format string passed to ConfigError::InvalidValue to explicitly
mention "--mesh-advertise-host" (you can still include
advertise_field/adverise_host values for context) so users are guided to set the
mesh-advertise-host flag.
- Around line 824-827: The current parsing of mesh_peer_urls swallows parse
errors (let peer = self.mesh_peer_urls.first().and_then(|url|
url.parse::<std::net::SocketAddr>().ok())), which can hide configuration
mistakes; change this to explicitly handle the Result from url.parse for the
peer (e.g., match or map_err) and either log a warning with the invalid URL and
parse error (using the project's logger, e.g., tracing::warn! or processLogger
equivalent) or propagate a configuration error from the surrounding function so
invalid peer URLs are not silently ignored—align this behavior with the Python
binding logic that returns an error on parse failure.

---

Outside diff comments:
In `@docs/reference/configuration.md`:
- Around line 388-399: Update all High-Availability Mesh example commands to
include the --mesh-advertise-host flag when --mesh-host is an unspecified bind
address (e.g., 0.0.0.0); specifically edit the example command blocks (the
Example: block and any "High-Availability Mesh" examples) to add a sensible
advertised address (matching the node’s routable IP) using --mesh-advertise-host
so they won't fail under the new validation that requires an advertise host when
--mesh-host is unspecified.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 23b1eb45-fda3-4749-82db-dfb416993c90

📥 Commits

Reviewing files that changed from the base of the PR and between e84ab67 and 5669e02.

📒 Files selected for processing (11)
  • bindings/python/src/lib.rs
  • bindings/python/src/smg/router_args.py
  • bindings/python/tests/test_arg_parser.py
  • crates/mesh/src/README.md
  • crates/mesh/src/controller.rs
  • crates/mesh/src/ping_server.rs
  • crates/mesh/src/service.rs
  • docs/concepts/architecture/high-availability.md
  • docs/reference/configuration.md
  • model_gateway/src/main.rs
  • model_gateway/src/server.rs

Comment thread bindings/python/src/lib.rs
Comment thread docs/concepts/architecture/high-availability.md
Comment thread docs/concepts/architecture/high-availability.md
Comment thread model_gateway/src/main.rs Outdated
Comment thread model_gateway/src/main.rs
@jshanson7
jshanson7 force-pushed the fix/mesh-discovery branch 2 times, most recently from fa36843 to c2b9ef7 Compare March 24, 2026 18:57

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/concepts/architecture/high-availability.md`:
- Around line 188-196: Add the missing explicit --mesh-host 0.0.0.0 flag to the
Node 3 example command so it matches Node 1/Node 2; update the smg invocation
for node3 (the block showing --enable-mesh, --mesh-server-name node3,
--mesh-advertise-host 10.0.0.13, --mesh-port 39527, --mesh-peer-urls
"10.0.0.11:39527,10.0.0.12:39527", --host 0.0.0.0, --port 8000) by inserting
--mesh-host 0.0.0.0 alongside the other mesh flags for consistency.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8dd8ee8d-149f-4ed1-a41a-9f1bf9ae9a1a

📥 Commits

Reviewing files that changed from the base of the PR and between 5669e02 and c2b9ef7.

📒 Files selected for processing (11)
  • bindings/python/src/lib.rs
  • bindings/python/src/smg/router_args.py
  • bindings/python/tests/test_arg_parser.py
  • crates/mesh/src/README.md
  • crates/mesh/src/controller.rs
  • crates/mesh/src/ping_server.rs
  • crates/mesh/src/service.rs
  • docs/concepts/architecture/high-availability.md
  • docs/reference/configuration.md
  • model_gateway/src/main.rs
  • model_gateway/src/server.rs

Comment thread docs/concepts/architecture/high-availability.md
@jshanson7
jshanson7 force-pushed the fix/mesh-discovery branch from c2b9ef7 to ecd31cc Compare March 24, 2026 20:06

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/concepts/architecture/high-availability.md (1)

411-429: ⚠️ Potential issue | 🟡 Minor

Missing POD_IP environment variable definition.

Line 415 references $(POD_IP) for --mesh-advertise-host, but only POD_NAME is defined in the env section (lines 420-423). The StatefulSet needs a POD_IP environment variable sourced from status.podIP.

📘 Suggested doc fix
         env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
+        - name: POD_IP
+          valueFrom:
+            fieldRef:
+              fieldPath: status.podIP
         ports:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/concepts/architecture/high-availability.md` around lines 411 - 429, The
StatefulSet manifest references POD_IP in the container arg
--mesh-advertise-host=$(POD_IP) but does not define POD_IP in the env block; add
an env entry named POD_IP that sources status.podIP (similar to the existing
POD_NAME section) so the container arg can expand correctly; update the env for
the container that sets POD_IP using valueFrom.fieldRef.fieldPath=status.podIP
to ensure --mesh-advertise-host receives the pod IP at runtime.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@docs/concepts/architecture/high-availability.md`:
- Around line 411-429: The StatefulSet manifest references POD_IP in the
container arg --mesh-advertise-host=$(POD_IP) but does not define POD_IP in the
env block; add an env entry named POD_IP that sources status.podIP (similar to
the existing POD_NAME section) so the container arg can expand correctly; update
the env for the container that sets POD_IP using
valueFrom.fieldRef.fieldPath=status.podIP to ensure --mesh-advertise-host
receives the pod IP at runtime.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 633a7871-360b-4d45-8a29-547743dcaffd

📥 Commits

Reviewing files that changed from the base of the PR and between c2b9ef7 and ecd31cc.

📒 Files selected for processing (11)
  • bindings/python/src/lib.rs
  • bindings/python/src/smg/router_args.py
  • bindings/python/tests/test_arg_parser.py
  • crates/mesh/src/README.md
  • crates/mesh/src/controller.rs
  • crates/mesh/src/ping_server.rs
  • crates/mesh/src/service.rs
  • docs/concepts/architecture/high-availability.md
  • docs/reference/configuration.md
  • model_gateway/src/main.rs
  • model_gateway/src/server.rs

@mergify

mergify Bot commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

Hi @jshanson7, this PR has merge conflicts that must be resolved before it can be merged. Please rebase your branch:

git fetch origin main
git rebase origin/main
# resolve any conflicts, then:
git push --force-with-lease

@mergify mergify Bot added the needs-rebase PR has merge conflicts that need to be resolved label Mar 24, 2026
@jshanson7
jshanson7 force-pushed the fix/mesh-discovery branch from ecd31cc to a5a2b71 Compare March 24, 2026 22:27
@mergify mergify Bot removed the needs-rebase PR has merge conflicts that need to be resolved label Mar 24, 2026
@jshanson7
jshanson7 force-pushed the fix/mesh-discovery branch from a5a2b71 to 8240bc0 Compare March 25, 2026 19:59
Signed-off-by: Jeff Hanson <jeff@thinkingmachines.ai>
@slin1237
slin1237 force-pushed the fix/mesh-discovery branch from 8240bc0 to c5e46d7 Compare March 26, 2026 03:59
@slin1237
slin1237 merged commit 6baac44 into smg-project:main Mar 26, 2026
32 checks passed
smfirmin pushed a commit to smfirmin/smg that referenced this pull request Apr 2, 2026
Signed-off-by: Jeff Hanson <jeff@thinkingmachines.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation model-gateway Model gateway crate changes python-bindings Python bindings changes tests Test changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants