Skip to main content

check_LLM

Pre-flight connectivity checks for the n8n + Ollama training stack. Run this before a training session to catch VPN/firewall/proxy problems that would otherwise derail the day — before participants start blaming n8n or Ollama for what's actually a blocked outbound connection.

Setup

There are two ways to run check_LLM:

  • Local dev clone — for anyone editing checks.toml/course profiles or working on the code itself. Clone the repo, cd into it, then:

    Copy-Item .env.example .env
    # edit .env: set GEMINI_API_KEY / OPENAI_API_KEY / OPENROUTER_API_KEY
    # (only needed for profiles that include the gemini/openai/openrouter checks)
    uv run dc-preflight-llm-check
    
  • Zero-clone, straight from PyPI — for a participant who just wants to run the pre-flight checks, no git required:

    uvx dc-preflight-llm-check
    

    With no local checks.toml, this uses a bundled default profile set (api-only/n8n-ollama/ollama-only — same as the repo's). Drop your own .env/checks.toml in whatever directory you run this from to customize either; dc-preflight-llm-check reads/writes .env, checks.toml, and check_log.txt relative to your current directory, not wherever the tool itself is installed.

  • Windows, no terminal comfort needed — just double-click check_script.bat. The first time, it asks for your API keys and saves them to a .env next to itself; every run after that reuses the saved keys automatically, no prompts. It also checks network connectivity and installs uv if it's missing before running dc-preflight-llm-check.

Profiles and flags

Which checks run is controlled by checks.toml, which defines named profiles — e.g. api-only runs network, uv, gemini, openai, openrouter. dc-preflight-llm-check's no-flag default is checks.toml's default_profile (currently api-only).

  • --profile NAME — run a specific named profile instead of the default
  • --checks a,b,c — run an explicit, comma-separated list of checks, overriding both --profile and checks.toml; handy for testing one or two checks without editing the config
  • --config PATH — use a checks.toml file at a non-default location
  • --list-profiles — print the profiles defined in checks.toml and exit

Examples:

uv run dc-preflight-llm-check --profile api-only
uv run dc-preflight-llm-check --checks network,uv
uv run dc-preflight-llm-check --list-profiles

The network check always runs first regardless of the order it's listed in, since every other check's failure is ambiguous without first knowing whether outbound internet works at all.

Reading the output

Each check prints one [PASS]/[FAIL] line as it runs, followed by an aggregate summary line, e.g.:

[PASS] network: reached https://www.google.com
[FAIL] gemini: GEMINI_API_KEY not set in .env — skipped network call
[PASS] openrouter: OpenRouter API reachable, key accepted
[PASS] uv: uv reached the package index
SUMMARY: 3/4 passed — FAILED: gemini

dc-preflight-llm-check exits 0 if every check passed, 1 if one or more checks ran and failed, and 2 if a config problem (an unknown --profile, or a missing/malformed checks.toml) stopped checks from running at all.

Every run also appends a timestamped block to check_log.txt (same content as the screen output) — paste this file when asking for help instead of re-describing what happened. It accumulates across runs rather than being overwritten, so a retry history is preserved; it's gitignored since it's a local runtime artifact, not something to commit.

Running a single check standalone

Every check_*.py under src/check_llm/ is independently runnable and follows the same contract — prints its [PASS]/[FAIL] line, appends to check_log.txt, and exits 0/1. This only works from a local dev clone (these aren't published as separate PyPI commands):

uv run src/check_llm/check_network.py
uv run src/check_llm/check_gemini.py

Running the test suite

uv run python -m unittest discover tests

This runs the full suite of unittest.mock-based tests accumulated so far — _common.py's helpers, main.py's orchestration logic, and the network/gemini/openai/openrouter/uv checks — with no real network calls and no third-party test framework. Docker-related checks and their tests aren't part of this repo yet; see PLAN.md Stage 8.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dc_preflight_llm_check-0.2.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dc_preflight_llm_check-0.2.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file dc_preflight_llm_check-0.2.0.tar.gz.

File metadata

  • Download URL: dc_preflight_llm_check-0.2.0.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.05","id":"yarara","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dc_preflight_llm_check-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bc2b670f5f79e4bb8db78e80288cd19c3996fb403844b2735f811529677117df
MD5 fdb7eb2951c8805551c23cbf13ca1f55
BLAKE2b-256 ad4b773a674913b7d58917b3d20ad5ee69a93f22bcc534b26a4321fe4b6dc119

See more details on using hashes here.

File details

Details for the file dc_preflight_llm_check-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dc_preflight_llm_check-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.05","id":"yarara","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dc_preflight_llm_check-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2b8bd4bc52ebe01746f3d557b0dfeb671f3d722527ce06734ca78bc86763588
MD5 fe66b445abd92ad00faf72597b0282db
BLAKE2b-256 412f1a3de062b7d1d0743edfbd8ae8dc2ea448be46da4f8bb57c5be7a0f3ff03

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page