AGILAB BSD license is an MLOps toolchain for engineering, powered by the OpenAI API, local GPT-OSS, local Mistral-Instruct, and MLflow. It helps you move from notebooks to production with CLI tooling, optional IDE run configurations, and packaged workers. IDE integrations remain available for teams that rely on them, but they are no longer required.
Docs publishing
- The static site is committed under
docs/htmland deployed by GitHub Pages directly (no Sphinx build in CI). - Preferred path: run
docs/gen_docs.sh. It builds Sphinx if a config exists; otherwise it syncssrc/agilab/resources/help/intodocs/htmland ensures anindex.htmlis present. - CI will deploy the committed
docs/html; if it’s empty, the workflow falls back to copying fromsrc/agilab/resources/help/. See documentation.
See also: CHANGELOG.md for recent changes.
- Demo users launch
uvx agilab; no repository checkout or IDE is required. - End users create a uv workspace and launch
uv run agilab; no repository checkout or IDE is required. - Developers clone this repository and launch install.sh; Pycharm IDE is strongly recommended. Never run
uvxinside the cloned checkout—use theuv run …commands or generated wrappers. see below for more details
Quick run (no setup):
uv tool upgrade agilab
uvx -p 3.13 agilabNote This
uvxinvocation is meant for demos or smoke tests. Any changes you make inside the cached package will be overwritten on the next run. For development, clone the repository or use a virtual environment. Within a local checkout, stick touv run …; invokinguvxthere replaces your workspace with the published wheel.
- Before launching, quickly inspect the newest installer log for errors.
- Log locations:
- Windows:
C:\Users\<you>\log\install_logs - macOS/Linux:
$HOME/log/install_logs
- Windows:
- PowerShell (Windows):
($d = "$HOME\log\install_logs"); $f = Get-ChildItem -LiteralPath $d -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1; if ($f) { Write-Host "Log:" $f.FullName; Select-String -LiteralPath $f.FullName -Pattern '(?i)(error|exception|traceback|failed|fatal|denied|missing|not found)' | Select-Object -Last 25 | ForEach-Object { $_.Line } } else { Write-Host "No logs found." }
- Bash (macOS/Linux):
dir="$HOME/log/install_logs"; f=$(ls -1t "$dir"/*.log 2>/dev/null | head -1); [ -n "$f" ] && echo "Log: $f" && grep -Eai "error|exception|traceback|failed|fatal|denied|missing|not found" "$f" | tail -n 25 || echo "No logs found."
Prefer to stay offline? Start a local GPT-OSS responses server and switch the “Assistant engine” selector (in the Experiment page sidebar) to GPT-OSS (local):
python -m pip install "agilab[offline]"
python -m pip install transformers torch accelerate # installs the local backends used by GPT-OSS
python -m gpt_oss.responses_api.serve --inference-backend transformers --checkpoint gpt2 --port 8000Update the endpoint field if you expose the server on a different port. The sidebar now lets you pick the GPT-OSS backend (stub, transformers, ollama, …), checkpoint, and extra launch flags; the app persists the values in env.envars. The default stub backend is only a connectivity check and returns canned responses—switch to transformers (or another real backend) to receive model-generated code.
When GPT-OSS is installed and the endpoint targets localhost, the sidebar automatically launches a local server the first time you switch to GPT-OSS (local) using the configured backend.
Managed workspace (project folder):
mkdir agi-space && cd agi-space
uv init --bare --no-workspace
uv add agilab
uv tool upgrade agilab
uv run agilabEvery IDE run configuration now has a matching shell script under tools/run_configs/. Regenerate them at any time with:
python3 tools/generate_runconfig_scripts.pyThe generator groups scripts under tools/run_configs/<group>/ (agilab, apps, components). Each wrapper exports the same environment variables, switches to the correct working directory, and executes the underlying uv command—no IDE required.
Linux and MacOs
git clone https://github.com/ThalesGroup/agilab
cd agilab
./install.sh --apps-repository path/to/your/apps/repository --apps-install --apps-testWindows
git clone https://github.com/ThalesGroup/agilab
cd agilab
# Built-in apps/pages only
powershell.exe -ExecutionPolicy Bypass -File .\install.ps1 -InstallApps
# Or include an external apps repository that contains 'apps' and/or 'apps-pages'
# The repository root must contain either '<repo>\\apps-pages' or '<repo>\\src\\agilab\\apps-pages'.
# Use quotes and backslashes on Windows.
powershell.exe -ExecutionPolicy Bypass -File .\install.ps1 -InstallApps -TestApps -AppsRepository "C:\\path\\to\\your-apps-repo"- Built-in pages live in this repo at
src/agilab/apps-pagesand are installed by default. - To add pages/apps from another repository, pass
-AppsRepository "C:\path\to\repo".- The installer probes
<repo>\apps-pagesand<repo>\src\agilab\apps-pagesfor pages. - Similarly for apps:
<repo>\appsand<repo>\src\agilab\apps(expects*_projectfolders).
- The installer probes
- Merging rules:
- Destination bases are
src/agilab/appsandsrc/agilab/apps-pages. - If a destination folder already exists and is not a link, it is left as-is (built-in takes precedence).
- If missing, a link/junction is created to the repository version.
- Destination bases are
- Environment controls (optional):
- Limit built-in pages:
BUILTIN_PAGES_OVERRIDE="page1,page2"orBUILTIN_PAGES="page1 page2". - Limit built-in apps:
BUILTIN_APPS_OVERRIDE="app_project1,app_project2"orBUILTIN_APPS.
- Limit built-in pages:
- Troubleshooting:
- If you pass
-AppsRepositoryand the repo has noapps-pages, the installer errors out. Omit-AppsRepositoryto use only built-ins. - Use quotes and backslashes in PowerShell paths; e.g.,
"C:\\Users\\me\\repo".
- If you pass
cd agilab/src/agilab
uv run agilab- Portions of
src/agilab/apps-pages/view_barycentric/src/view_barycentric/view_barycentric.pyare adapted from Jean-Luc Parouty’s “barviz / barviz-mod” project (MIT License). SeeNOTICEandLICENSES/LICENSE-MIT-barviz-modfor details.
-
AgiEnv is a singleton. Use instance attributes (
env.apps_dir,env.logger, etc.). Class attribute reads (e.g.,AgiEnv.apps_dir) proxy to the singleton when initialised; methods/properties are not shadowed. A few helpers are pre‑init safe (AgiEnv.set_env_var,AgiEnv.read_agilab_path,AgiEnv._build_env,AgiEnv.log_info). -
Environment flags (replaces legacy
install_type):env.is_source_env: true when running from a source checkout.env.is_worker_env: true in worker-only contexts (e.g.,wenv/*_worker).env.is_local_worker: helper flag for home‑scoped worker layouts.
-
App constructors (templates + flight_project) ignore unknown kwargs when constructing their Pydantic
Argsmodels. This preserves strict validation while making constructors resilient to incidental extras. Configure verbosity viaAgiEnv(verbose=…)or logging, not via appArgs.