jammi-server
The OSS server binary for Jammi AI.
What it is
jammi-server is the substrate-level service for Jammi: a single-process binary that exposes Jammi's data sources, mutable tables, trigger streams, and vector search over Arrow Flight SQL and typed gRPC. It is the runnable artifact behind docker pull ghcr.io/f-inverse/jammi-ai-server.
The OSS server is single-tenant. The deployer's network is the authentication boundary — run one server per tenant, or front the binary with a reverse proxy that enforces tenancy at the HTTP layer. Multi-tenant SaaS, authentication, and the enterprise feature set (Registry, Gate, Monitor, Experiment, Blocks, Resilience) live in a separate commercial server.
What it exposes
| Surface | Port | Wire format |
|---|---|---|
| Arrow Flight SQL | 8081 |
gRPC (HTTP/2) |
jammi.v1.session.SessionService |
8081 |
gRPC + gRPC-Web |
jammi.v1.trigger.TriggerService |
8081 |
gRPC + gRPC-Web |
/healthz |
8080 |
HTTP/1.1 JSON |
/readyz |
8080 |
HTTP/1.1 JSON |
/metrics |
8080 |
Prometheus text |
The gRPC chain and Flight SQL share one Tonic server so a client binding a tenant via SessionService.SetTenant (with a jammi-session-id header) sees the same scoping applied to its Flight SQL queries.
What it is NOT
- Not multi-tenant. No tenant column on OSS-exclusive tables; no auth on the wire.
- Not clustered. Single-instance only; no leader election, no replication.
- Not authenticated. The OSS server speaks unauthenticated gRPC. Run it behind your own boundary.
- Not the enterprise binary. Registry / Gate / Monitor / Experiment / Blocks / Resilience are commercial features and ship in a separate image.
Quickstart (Docker)
# Liveness
# {"status":"ok","version":"0.8.0"}
# Readiness
# {"status":"ready"}
# Prometheus metrics
# jammi_grpc_requests_total 0
# jammi_flight_queries_total 0
# ...
# Flight SQL roundtrip from Python.
Quickstart (from source)
Production deploy
See Deploy as a Server in the cookbook for the full guide. The short version:
- Mount a persistent volume at
/var/lib/jammi(orchown 65532:65532your bind mount — the distroless image runs as the nonroot user). - Provide a config file at
/etc/jammi/jammi.toml. The sample atexamples/jammi.tomlis the starting point. - Point your load balancer's readiness check at
/readyz. The probe pings the catalog backend; a 503 means traffic should be drained from this instance. - Scrape
/metricsfrom Prometheus. The OSS server emits gRPC request counts, Flight SQL query counts, eval invocation counts, and a search-latency histogram.
License
Apache-2.0