JobPilot

πŸ”Œ Using OmniRoute with Job-Pilot

OmniRoute is a local, open-source AI gateway β€” one OpenAI-compatible endpoint (http://localhost:20128/v1) that routes across many providers with free-tier fallback. Job-Pilot connects to it like any other provider, so all the AI features (company/salary intel, rΓ©sumΓ© analysis, interview prep, salary coach, and the apply-kit drafts) work through it.

Configure it in Job-Pilot

The OmniRoute (local) preset is selected by default, so the sidebar already points at http://localhost:20128/v1 with model auto/best-free:

Job-Pilot sidebar configured for OmniRoute

The πŸ§ͺ Test connection button shows a βœ… only once OmniRoute is actually running and has at least one active provider β€” see the setup steps below.

Setup steps

  1. Install & run OmniRoute β€” its dashboard opens at http://localhost:20128.
  2. Providers β†’ connect at least one (e.g. Kimi, DeepSeek, Gemini). The Provider Topology must show β‰₯ 1 active β€” a router with 0 active providers can’t answer.
  3. API Keys β†’ Create a key.
  4. In Job-Pilot’s sidebar:
    • Choose the OmniRoute (local) preset (already the default).
    • Paste your key into API key.
    • Click πŸ”„ Load models β†’ pick a model.
    • Click πŸ§ͺ Test connection β€” you should see βœ… and the model name.
sequenceDiagram
    participant JP as Job-Pilot
    participant OR as OmniRoute (:20128)
    participant P as Provider (DeepSeek / Kimi / …)
    JP->>OR: POST /v1/chat/completions (model = auto/best-free)
    OR->>P: routes to a healthy provider
    P-->>OR: completion
    OR-->>JP: OpenAI-shaped response

⚠️ Pick the right model (the #1 gotcha)

OmniRoute exposes namespaced model routes β€” there is no bare auto. Sending auto (or auto/best-chat) can fall through to a weak provider (e.g. felo-chat) that returns garbage like .com.

Use these βœ… Avoid these ❌
auto/best-free, auto/smart (route to DeepSeek) bare auto, auto/best-chat (β†’ felo-chat junk)

Use πŸ”„ Load models to see everything your OmniRoute exposes, and πŸ§ͺ Test connection to confirm a model actually replies before you rely on it. If output ever comes back as a fragment, Job-Pilot detects it and tells you to switch models. Some providers may return errors independent of Job-Pilot (e.g. Kimi 402 if billing is unset, occasional 502s) β€” just pick another working route.

Prefer zero setup?

If you don’t want to run a gateway, the Groq (free) preset is the fastest path: sign up at console.groq.com β†’ API Keys, paste the key, done. Full provider table is in the main README.