This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
ReleasePort's take
Light signalReleasePort Layer 1 v0.6.1 adds an opt‑in `--ingest-on-startup` flag that auto‑ingests data at server launch, and updates documentation for embedding_search setup.
Why it matters: If you run long‑running servers and use the embedding_search extra, enable `--ingest-on-startup` to have embeddings refreshed automatically on startup; consult the updated docs for configuration details.
Summary
AI summaryAdded opt-in boot-time auto-ingest flag --ingest-on-startup for long-running servers.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Low |
Prints drift entries discovered during ingest to stderr but never auto‑applies them, keeping destructive cleanup gated behind `slayer validate-models --force-clean` Prints drift entries discovered during ingest to stderr but never auto‑applies them, keeping destructive cleanup gated behind `slayer validate-models --force-clean` Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Medium |
Startup ingest refreshes embeddings when embedding_search extra installed Startup ingest refreshes embeddings when embedding_search extra installed Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Auto-ingest on startup via CLI flag, env var, or API Auto-ingest on startup via CLI flag, env var, or API Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Performs idempotent auto-ingestion across all configured datasources before the server begins listening Performs idempotent auto-ingestion across all configured datasources before the server begins listening Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Medium |
Updates MCP getting‑started documentation to include `embedding_search` in extras list and document provider‑key contract Updates MCP getting‑started documentation to include `embedding_search` in extras list and document provider‑key contract Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Medium |
Ensures server does not start listening until synchronous startup ingestion completes Ensures server does not start listening until synchronous startup ingestion completes Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Low |
Adds `--ingest-on-startup` flag to `slayer serve` and `slayer mcp` Adds `--ingest-on-startup` flag to `slayer serve` and `slayer mcp` Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Low |
Supports `SLAYER_INGEST_ON_STARTUP` environment variable as alternative to CLI flag Supports `SLAYER_INGEST_ON_STARTUP` environment variable as alternative to CLI flag Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Low |
Provides `ingest_on_startup=True` keyword argument for programmatic server creation Provides `ingest_on_startup=True` keyword argument for programmatic server creation Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Low |
Continues ingestion on failure per datasource, preventing a single bad connection from blocking others Continues ingestion on failure per datasource, preventing a single bad connection from blocking others Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Low |
Directs all ingest‑related progress output to stderr to keep stdio JSON‑RPC protocol‑safe Directs all ingest‑related progress output to stderr to keep stdio JSON‑RPC protocol‑safe Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Performance | Low |
Hash‑skips entity embedding refresh when content has not changed during startup ingest Hash‑skips entity embedding refresh when content has not changed during startup ingest Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Refactor | Medium |
MCP documentation updated with embedding_search setup examples MCP documentation updated with embedding_search setup examples Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Low |
Moves `_friendly_db_error` from `slayer/mcp/server.py` to `slayer/engine/ingestion.py` Moves `_friendly_db_error` from `slayer/mcp/server.py` to `slayer/engine/ingestion.py` Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Refactor | Low |
Relocates `_print_ingest_addition` and `_print_ingest_drift_and_errors` to `slayer/engine/ingestion.py` and adds a `file=` argument Relocates `_print_ingest_addition` and `_print_ingest_drift_and_errors` to `slayer/engine/ingestion.py` and adds a `file=` argument Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Other | Low |
Adds 46 tests in `tests/test_startup_ingest.py` covering ingestion behavior and integration paths Adds 46 tests in `tests/test_startup_ingest.py` covering ingestion behavior and integration paths Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
Full changelog
SLayer 0.6.1 Release Notes
A maintenance release: one PR since 0.6.0 adds an opt-in boot-time auto-ingest path for long-running servers. No schema changes; no breaking changes.
--ingest-on-startup for slayer serve and slayer mcp (DEV-1392)
A new opt-in flag on slayer serve and slayer mcp runs idempotent auto-ingestion across every configured datasource before the server starts listening, so an agent that connects immediately after boot finds the catalog already populated instead of racing the first ingest.
Three equivalent entry points: the --ingest-on-startup CLI flag, the SLAYER_INGEST_ON_STARTUP env var (truthy values 1 / true / yes; flag wins over env), and the ingest_on_startup=True kwarg on create_app / create_mcp_server for programmatic embedders.
Sequential, sync-before-listen ? uvicorn / mcp.run don't start until ingestion finishes ? and continue-on-failure per datasource so one broken connection string can't block the rest. Only storage.list_datasources() raising prevents server startup. Drift entries discovered during ingest are printed to stderr but never auto-applied; destructive cleanup stays gated behind slayer validate-models --force-clean.
All progress output goes to stderr so slayer mcp stdio JSON-RPC stays protocol-safe.
When the embedding-search third channel is active (embedding_search extra installed + provider key in the environment), startup ingest also refreshes per-datasource embeddings through the existing _refresh_datasource_embeddings hook, which hash-skips entities whose content hasn't changed.
The recommended MCP setup snippets in docs/getting-started/mcp.md now include embedding_search in the uvx --from 'motley-slayer[...]' extras list and document the provider-key contract (OPENAI_API_KEY by default; override the model with SLAYER_EMBEDDING_MODEL=voyage/... plus the matching provider key).
Implementation refactors: _friendly_db_error moved from slayer/mcp/server.py to slayer/engine/ingestion.py; _print_ingest_addition / _print_ingest_drift_and_errors moved from slayer/cli.py to slayer/engine/ingestion.py and gained a file= kwarg (resolved at call time, not import time, so contextlib.redirect_stdout callers are honoured).
46 tests in tests/test_startup_ingest.py cover orchestrator behaviour, CLI flag plumbing, env-var precedence, demo-then-ingest ordering, programmatic kwarg paths, and propagation of list_datasources errors.
Schema versions
SlayerModel remains version 6, SlayerQuery remains version 3, DatasourceConfig remains version 1. No storage migrations were needed for this release.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Track SLayer, a semantic layer maintained by your agent
Get notified when new releases ship.
Sign up freeAbout SLayer, a semantic layer maintained by your agent
All releases →Related context
Related tools
Earlier breaking changes
- v0.6.3 Datasource names now reject dots, slashes, nulls, empty/whitespace; existing names containing '.' will fail validation on upgrade.
- v0.6.0 recall_memories surface entirely removed with no deprecation shim.
- v0.5.1 Two-mode reference semantics enforced: SQL mode accepts arbitrary SQL; DSL mode strictly resolves identifiers.
- v0.5.1 RecallHit.match_count renamed to RecallHit.score across MCP, REST, CLI, and SlayerClient.
Beta — feedback welcome: [email protected]