All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
install.sh --devflag — installs frommainon GitLab instead of the latest GitHub release, enabling a pre-release smoke test of the official install path- CI smoke-test jobs — run the real
install.shagainst the current checkout under each supported package manager (uv, pipx, pip) and then start the CLI (deepfellow version/deepfellow --help); gate the release stage so a broken install, dispatch regression, or startup crash blocks the GitHub push infra restartandserver restartcommands — restart the whole Docker Compose stack for their scope in one step (stop then start), instead of runningstopandstartmanuallydeepfellow otel logscommand — tails the local OpenTelemetry collector (installed viaserver install --otel-local) with-f/--followand-n/--tail, consistent withserver logs; reports clear errors when the collector is not installed or not runninginfra env setandserver env setnow prompt to restart the stack after updating the.envfile, so the new value takes effect immediately without a manual restartserver installandserver updatenow automatically select the newest semver-tagged image from the registry (e.g.v1.2.3) instead of:latest, matching the existing behaviour ofinfra installandinfra update; falls back to:latestif the registry is unreachable- Unit tests for
infra disconnectcovering directory checks, service-running guard, confirmation flow, env variable handling, and disconnect execution paths - Unit test coverage for infra install raised to 100%
- Unit test coverage for infra start raised to 100%
- Unit tests for
server create-admincommand - Added http(s) to ws(s) converter which allows connecting Infra even with http(s) URL provided.
deepfellow uninstallcommand — uninstalls the CLI using the detected package manager (uv tool,pipx, orpip); falls back to theDF_UNINSTALL_COMMANDvalue stored in config for custom setupsserver installandserver reconfigurenow prompt to choose between dense and sparse embedding type; selecting sparse automatically uses the BGE-M3 modelDF_MONGO_PORT— configurable host port for the local MongoDB instance (default27017);server installnow publishes MongoDB on the specified port instead of only exposing it within the Docker network
server installnow frames the MongoDB and vector database prompts as a local install by default ("Install a local MongoDB for DeepFellow Server?" / "Install a local vector database for DeepFellow Server?", default Yes), so accepting the defaults produces a working local stack; connecting an existing/external instance now requires answering No and providing its connection detailsserver create-adminnow prints the password requirements up front and re-prompts in a loop on an invalid password instead of exiting, matching the existing behaviour of the name and email prompts;--non-interactivestill exits with code 1 on a missing or invalid password- Increased timeout when connecting Infras to 60 seconds.
deepfellow infra service listcommand — callsGET /admin/servicesand displays the installed service backendsjust deptrycommand — runsdeptryto detect imports used in source but not declared as explicit dependencies inpyproject.toml; integrated intojust checkand the CI/CD pipeline
- Removed unused symbols from common modules:
merge_services(),ConfigValidationError,check_directory_exist(),validate_config(),Infrasdataclass, and legacy constantsDF_INFRA_REPO,DF_SERVER_REPO,API_ENDPOINTS; corresponding tests deleted server installandserver opentelemetrynow useDF_OTEL_EXPORTER_OTLP_ENDPOINTas the default OTel URL instead ofNone
server uninstallandinfra uninstallno longer crash withPermissionErroron Docker-owned directories; they now warn the user, ask to retry withsudo rm -rf(auto-confirmed with--yes), and print a clear manual-removal message if sudo is declined or unavailable- Server
compose.yamlnow forwardsDF_PLUGINS_SETUPandDF_LOG_LEVELto the server container, soserver env set PLUGINS_SETUP ...actually reaches the server (previously plugins likeDFAnonymizePluginnever saw their configuration);server installwrites defaults ({}/INFO), preserves existing values on reinstall and validates both before writing server install --otel-localinstalls a local debug-only OpenTelemetry collector non-interactively (mutually exclusive with--otel-url); previously the local collector could only be enabled through interactive prompts
server installandserver reconfigurenow offer a debug-only OTel collector mode: when the user opts to run OTel locally, a new prompt asks whether to export to Elasticsearch (default: No); answering No starts theotel-collectorwithout any Elasticsearch dependency
- CLI runtime flags now come from an internal
AppStatesingleton instead of the Click context, so the CLI runs on Typer 0.26.x (previously pinned to 0.16.x to avoid a startup crash)
server env infonow displays variable names with theDF_prefix (e.g.DF_SERVER_PORT) to match the names Docker/shell require, whileserver infokeeps showing runtime values without the prefix
- Added
--api-keyoption toinfra service installto support remote services requiring an API key (e.g.claude) - Added per-service spec building for known cloud services (
claude,google,openai,sindri); required fields with defaults (e.g.anthropic_version) are applied automatically
deepfellow cli updatecommand — upgrades the CLI using the detected package manager (uv tool,pipx, orpip)df infra connectnow verifies the WebSocket mesh connection is live before reporting success, with multi-stage polling of/admin/mesh/topology, detection of outdated images (HTML response) and legacy parent API (Docker log fallback), and a warning when a localhost URL is used- Increased maximum password length from 19 to 128 characters
- pin
typer~=0.16.0to prevent crash on startup caused by Typer 0.26+ vendoring its own Click fork with a separate context stack, breakingclick.get_current_context()calls
server reconfigurenow preserves existing MongoDB admin credentials instead of regenerating them
infra infoandserver infonow display styled output:DF_prefix stripped, sensitive values masked by default (--secretto reveal), undefined variables shown asundefined, and--docflag for per-variable descriptions- Added unit tests for
infra stopcommand - Added unit tests for
infra updatecommand - Added unit tests for
infra ssl-oncommand (100% branch coverage) - Added unit tests for
infra installcommand
- fix:
infra install— docker compose pull failure now shows error message - fix:
server login— fix KeyError crash when server response lacksrefresh_token
deepfellow infra prune— removes all infra containers, volumes, and filesdeepfellow server prune— removes all server containers, volumes, and files
- fix release process
- styling for the
echo.choice echo.choicenow handlesfrom_argsinstall --directorysets storage path automatically- vector database selection text styling consistency
- create random credentials for
- metrics endpoint
- default mongo
- default milvus
- fix for non interactive:
- server
- infra civitai key
- infra hugging face key
- server install now persists OTEL data between runs
- fix: mongo compatibility on some systems
- fix: password minimum length enforced to 10 characters
- refresh token automatically on server login
- bind docker ports to localhost only (do not expose publicly)
- recommend rootless Docker mode for infra installs
- add healthcheck for Qdrant container
- fix: too wide permissions on mongo database
- fix: outdated Docker Compose service names
- Qdrant as a default vector database
deepfellow infra status/deepfelow server status- displays container status and resource usage- Added non-interactive mode support with
--non-interactiveflag for all commands
- Initial release of DeepFellow CLI
- Server management commands:
deepfellow server install- Install DeepFellow Server with dockerdeepfellow server start- Start DeepFellow Serverdeepfellow server stop- Stop DeepFellow Serverdeepfellow server update- Update DeepFellow Serverdeepfellow server login- Login user and store the token in the secrets filedeepfellow server create-admin- Create admindeepfellow server password-reset- Password resetdeepfellow server opentelemetry- Connect to Open Telemetrydeepfellow server project- Manage Projectsdeepfellow server organization- Manage Organizationsdeepfellow server env- Manage DeepFellow Server environment variablesdeepfellow server info- Display environment configuration
- Infra management commands:
deepfellow infra install- Install infra with dockerdeepfellow infra start- Start DeepFellow Infradeepfellow infra stop- Stop DeepFellow Infradeepfellow infra update- Update DeepFellow Infradeepfellow infra ssl-on- Switch on the SSLdeepfellow infra connect- Connect two Infras togetherdeepfellow infra disconnect- Disconnect infradeepfellow infra service- Manage DeepFellow Infra servicesdeepfellow infra model- Manage DeepFellow Infra modelsdeepfellow infra env- Manage Infra environment variablesdeepfellow infra info- Display environment configuration
- Support for Docker Compose features
- Environment variable management for both server and infra
- OpenTelemetry integration support for server installations
- Project and organization management capabilities
- Password reset functionality
- Admin creation support
- Service and model management for infra
- SSL configuration support
- Environment configuration and management
deepfellow service uninstallget--purgeoption to clear its filesdeepfellow model uninstallget--purgeoption to clear its files