Skip to content

docs: rework getting started and add production deployment guide - #641

Open
SantiagoDePolonia wants to merge 4 commits into
mainfrom
docs/rework
Open

docs: rework getting started and add production deployment guide#641
SantiagoDePolonia wants to merge 4 commits into
mainfrom
docs/rework

Conversation

@SantiagoDePolonia

@SantiagoDePolonia SantiagoDePolonia commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Reworks the Quick Start page and adds a new Production Deployment guide.

Quick Start

  • Fills in the missing links for provider setup: env vars, config.yaml, and the dashboard Providers page
  • Adds the missing screenshot (captured from a live dashboard: the Add Provider dialog)
  • Adds the missing Anthropic SDK examples (Python + JavaScript) for /v1/messages
  • Grammar fixes, and a next-step link to the new production guide

New: Production Deployment guide (Guides tab)

A production-grade checklist. Every claim was verified against the source rather than the existing docs, and several were verified by running the gateway locally:

  • Footprint / serverless - single static CGO-free binary on distroless, with the numbers from the benchmarks page
  • Storage - SQLite (default) / PostgreSQL / MongoDB, and when each stops being viable, including the Docker no-volume data-loss case
  • Credentials - why env vars from a secret manager are the production recommendation: dashboard-configured provider keys are stored plaintext, and config-declared providers cannot have their base_url repointed at runtime
  • Air-gapped - GoModel runs fully offline; the one non-provider outbound call (the model metadata registry) degrades gracefully, but losing it means no pricing, which silently disables budget enforcement
  • Multi-replica - which state is durable vs per-instance, plus the config propagation delays (budget and rate-limit rules do not reach other replicas until restart)
  • Retention, observability, hardening

Doc corrections found while verifying

  • .env.template claimed MODEL_LIST_URL could be set to an empty string to disable the model list fetch. It cannot - empty env values are skipped in config/env.go, so the compiled-in default survives. Comment now documents the working method (cache.model.model_list.url: "" in YAML).
  • docs/about/faq.mdx referenced GOMODEL_SQLITE_PATH. The canonical variable is SQLITE_PATH (config/storage.go:25); the prefixed form has no effect. Verified by running the binary both ways.

Also

  • Adds the missing icon to the Session Keeping feature page

Note

MODEL_LIST_URL="" being a silent no-op is a documentation fix here, not a code fix. If the intended behavior is that an empty value disables the fetch, that needs a change in the env override loop and is out of scope for a docs PR.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive production deployment guide covering storage, Redis, security, TLS, air-gapped deployments, replicas, health checks, observability, and operational best practices.
    • Updated the quickstart with faster setup instructions, flexible provider configuration, Anthropic examples, the /v1/messages endpoint, audit logs, and production deployment guidance.
    • Added the production guide to documentation navigation.
    • Clarified model registry configuration and corrected the documented database path setting.
    • Added an icon to the Session Keeping feature page.

SantiagoDePolonia and others added 2 commits August 3, 2026 15:30
…ropic SDK examples

- Link provider setup to the env-var, config.yaml, and dashboard Providers docs
- Add an "Add Provider" dashboard screenshot for the provider setup step
- Add Python and JavaScript Anthropic SDK examples for /v1/messages
- Fix grammar in the request-step intro and section headings

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds a production-grade deployment checklist covering footprint and
serverless suitability, storage backend choice, credential handling,
air-gapped operation, multi-replica behavior, retention, observability,
and hardening.

Also adds the missing icon to the Session Keeping feature page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 3, 2026 14:09
@mintlify

mintlify Bot commented Aug 3, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
gomodel 🟢 Ready View Preview Aug 3, 2026, 2:12 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c044e736-feb3-461a-b94f-96c4b24c9855

📥 Commits

Reviewing files that changed from the base of the PR and between 12104b7 and f29fe80.

📒 Files selected for processing (2)
  • docs/about/faq.mdx
  • docs/guides/production.mdx

📝 Walkthrough

Walkthrough

The documentation update revises quickstart setup, provider configuration, and SDK examples. It adds a production deployment guide, updates configuration references, registers the guide, and adds session page metadata.

Changes

Documentation guidance

Layer / File(s) Summary
Documentation entry points and references
docs/docs.json, docs/features/session-keeping.mdx, .env.template, docs/about/faq.mdx
Registers the production guide, adds the session page icon, and updates model registry and database path references.
Quickstart onboarding flow
docs/getting-started/quickstart.mdx
Updates setup instructions, provider configuration methods, Anthropic SDK examples, admin terminology, audit-log details, and next steps.
Production deployment foundations
docs/guides/production.mdx
Documents deployment scope, resources, storage, Redis, credentials, TLS, proxy and CORS settings, air-gapped operation, and model metadata behavior.
Production operations and hardening
docs/guides/production.mdx
Documents replica behavior, probes, shutdown, retention, observability, security hardening, and the production checklist.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested reviewers: copilot

Poem

Poem

A rabbit checks each setup sign,
With keys in env vars, neat in line.
Storage, probes, and TLS appear,
While production guidance grows clear.
The docs hop forward, crisp and bright.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main documentation changes: reworking the getting-started content and adding a production deployment guide.
Description check ✅ Passed The description clearly explains the documentation changes, corrections, verification work, and scope, although it uses "Summary" instead of the template's "Description" heading.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/rework

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.

@coderabbitai coderabbitai 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.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/getting-started/production.mdx`:
- Around line 283-289: Update the phrase “10 second mark” in the production
shutdown documentation to the hyphenated compound modifier “10-second mark,”
without changing the surrounding timeout guidance.

In `@docs/getting-started/quickstart.mdx`:
- Around line 15-16: Update the quickstart installation commands to use
versioned, immutable startup scripts instead of mutable remote URLs, and
document verifying their signed checksum or platform signature before execution.
Replace the untagged Docker image reference with a pinned digest, preserving the
existing installation and startup flow.
- Around line 35-40: Update the “Set up a provider” section to include one
self-contained supported provider environment-variable example, explicitly
showing the required credential variable and matching model value. Keep the
existing config.yaml and Dashboard links as alternative configuration methods,
and present the example concisely for new users.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 5a8bfa0a-22fa-47a1-8a5b-f87082b34a47

📥 Commits

Reviewing files that changed from the base of the PR and between b10ee6b and bac0428.

⛔ Files ignored due to path filters (1)
  • docs/getting-started/images/add-provider.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • docs/docs.json
  • docs/features/session-keeping.mdx
  • docs/getting-started/production.mdx
  • docs/getting-started/quickstart.mdx

Comment thread docs/guides/production.mdx
Comment on lines 15 to +16
curl -fsSL https://gomodel.enterpilot.io/install.sh | sh
GOMODEL_MASTER_KEY="change-me" OPENAI_API_KEY="sk-..." gomodel
gomodel

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.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Pin and verify the startup artifacts.

Lines 15 and 21 download mutable remote scripts and execute them immediately. Line 27 pulls an untagged mutable image. A compromised artifact hosting or publishing path can execute code on the user's machine.

Publish versioned artifacts with a signed checksum or platform signature. Document verification before script execution. Pin the Docker image by digest.

Also applies to: 21-22, 27-27

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/getting-started/quickstart.mdx` around lines 15 - 16, Update the
quickstart installation commands to use versioned, immutable startup scripts
instead of mutable remote URLs, and document verifying their signed checksum or
platform signature before execution. Replace the untagged Docker image reference
with a pinned digest, preserving the existing installation and startup flow.

Comment on lines +35 to +40
### 2. Set up a provider

Use `curl` or the OpenAI SDKs for Python and JavaScript against the same
OpenAI-compatible endpoint:
You can do this with an [environment variable](/advanced/configuration#auto-discovery-from-environment-variables),
a [config.yaml file](/advanced/config-yaml) (infrastructure as code), or from
the Dashboard's [Providers page](/providers/overview#configuring-providers-without-env-vars) -
(no restart required in this case).

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.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add one self-contained provider configuration example.

These lines only link to other configuration pages. A new user cannot configure a provider from this Quick Start page.

Show one supported provider environment-variable example. State the required credential variable and the matching model value. Keep the YAML and Dashboard links as alternatives.

As per coding guidelines, **/*.{md,mdx} must “Write concise, practical, user-focused documentation showing defaults, override conditions, and minimal useful examples.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/getting-started/quickstart.mdx` around lines 35 - 40, Update the “Set up
a provider” section to include one self-contained supported provider
environment-variable example, explicitly showing the required credential
variable and matching model value. Keep the existing config.yaml and Dashboard
links as alternative configuration methods, and present the example concisely
for new users.

Source: Coding guidelines

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@greptile-apps

greptile-apps Bot commented Aug 3, 2026

Copy link
Copy Markdown

Confidence Score: 4/5

Security Review

The Quick Start directs operators to start GoModel without GOMODEL_MASTER_KEY. In a fresh installation with no managed keys, this leaves /admin/provider-credentials accessible without credentials, allowing a network client to read and modify provider configuration. The Quick Start should require a master key or clearly prevent the unauthenticated admin state before it is used outside a trusted local environment.

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex produced a proof for a posted P1 finding and linked it to the review comment detailing the finding.
  • T-Rex produced an additional proof for another posted P1 finding, with details described in the corresponding review comment.
  • T-Rex executed the quickstart admin auth validation script to start isolated gateway states and send unauthenticated requests, and captured the before and after responses in the included logs.

View all artifacts

T-Rex Ran code and verified through T-Rex

Comments Outside Diff (1)

  1. General comment

    P1 Quickstart startup path exposes unauthenticated admin provider configuration

    • Bug
      • The startup commands at docs/getting-started/quickstart.mdx:12-29 omit GOMODEL_MASTER_KEY. In a fresh isolated deployment with no managed keys, an unauthenticated client received HTTP 200 from GET /admin/provider-credentials and HTTP 200 from PUT /admin/provider-credentials, which persisted a disabled test provider. This conflicts with the documentation statement at quickstart.mdx:142-144 that /admin/* uses bearer authentication.
    • Cause
      • internal/server/http.go:243-247 intentionally appends /admin/* to authSkipPaths when cfg.MasterKey == "", while the provider credential mutation is mounted at internal/admin/routes.go:41-44.
    • Fix
      • Require an explicit bootstrap/admin credential before exposing admin mutation routes, or disable/admin-gate /admin/* when no master key exists. At minimum, change the quickstart to require GOMODEL_MASTER_KEY and prominently warn that an unset key exposes the admin API unless protected by a network perimeter.

    T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "docs(getting-started): add production de..." | Re-trigger Greptile

Comment on lines 12 to 29
<Tabs>
<Tab title="macOS / Linux">
```bash
curl -fsSL https://gomodel.enterpilot.io/install.sh | sh
GOMODEL_MASTER_KEY="change-me" OPENAI_API_KEY="sk-..." gomodel
gomodel
```

<ProviderCredentialsNote />
</Tab>
<Tab title="Windows">
```powershell
irm https://gomodel.enterpilot.io/install.ps1 | iex
$env:GOMODEL_MASTER_KEY = "change-me"; $env:OPENAI_API_KEY = "sk-..."; gomodel
gomodel
```

<ProviderCredentialsNote />
</Tab>
<Tab title="Docker">
```bash
docker run --rm -p 8080:8080 \
-e LOG_FORMAT=text \
-e GOMODEL_MASTER_KEY="change-me" \
-e OPENAI_API_KEY="sk-..." \
enterpilot/gomodel
docker run --rm -p 8080:8080 enterpilot/gomodel
```

<ProviderCredentialsNote />
</Tab>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 security Unauthenticated quick-start gateway

The startup commands omit GOMODEL_MASTER_KEY. In a fresh installation with no managed keys, this makes /admin/* unauthenticated: an external client can read and modify provider configuration without credentials. The production guide warns about this state, but the primary Quick Start still directs users into it and later incorrectly states that admin endpoints use bearer authentication. Require a master key in the Quick Start, or prevent admin routes from being exposed when no key is configured.

Artifacts

Validation script for protected and no-master-key gateway states

  • This executable source starts clean isolated gateway instances and issues the unauthenticated admin requests, ending with the reproducible validation procedure.

Admin endpoint response with a master key configured

  • The executed baseline capture shows an unauthenticated provider-credentials request returning HTTP 401 and the missing-credentials message, ending with authentication enforced.

Admin endpoint responses without a master key or managed keys

  • The executed clean-state capture shows unauthenticated provider listing and a safe disabled-provider mutation both returning HTTP 200, ending with confirmed unauthenticated configuration access.

View artifacts

T-Rex Ran code and verified through T-Rex

… docs

- Move the Production Deployment page from Getting Started to Guides, and
  link it from the Quick Start next steps
- .env.template: an empty MODEL_LIST_URL does not disable the model list
  fetch, since empty env values are skipped; document the config.yaml form
- FAQ: the SQLite path override is SQLITE_PATH, not GOMODEL_SQLITE_PATH

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 4, 2026 07:24

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/about/faq.mdx`:
- Line 78: Update the FAQ sentence describing SQLITE_PATH and GOMODEL_CACHE_DIR
so it states that SQLITE_PATH overrides the SQLite database path while
GOMODEL_CACHE_DIR overrides the model cache directory; do not group both
variables as database-path overrides.

In `@docs/guides/production.mdx`:
- Around line 17-19: Update the production guide sentence near “GoModel” to
insert “with” before the inline `CGO_ENABLED=0` build setting, preserving the
rest of the wording.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 1cbf93d2-2dcb-4af8-a197-8f746f3c591c

📥 Commits

Reviewing files that changed from the base of the PR and between bac0428 and 12104b7.

📒 Files selected for processing (5)
  • .env.template
  • docs/about/faq.mdx
  • docs/docs.json
  • docs/getting-started/quickstart.mdx
  • docs/guides/production.mdx

Comment thread docs/about/faq.mdx Outdated
Comment thread docs/guides/production.mdx
- FAQ: SQLITE_PATH overrides the database path, GOMODEL_CACHE_DIR the model
  cache directory; the previous wording grouped both as path overrides
- Grammar fixes in the production guide

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 4, 2026 07:32

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants