MagicDesk
Model policies, set per workspace
Tenants on the same install no longer have to share one model configuration. An operator can decide which providers a workspace may reach, cap what it may spend, and leave the rest of the estate untouched.
-
Added
-
-
Per-workspace model allow-lists, with a fallback chain when a provider is unavailable.
-
Spend ceilings per workspace and per seat, enforced before the request leaves the queue.
-
An audit view showing which policy answered each completion.
-
Improved
-
-
Streaming responses now reconnect rather than restart when a socket drops mid-answer.
-
The tenant switcher loads in one query instead of one per workspace.
-
Fixed
-
-
Usage records could double-count a retried completion when the first attempt timed out after partial delivery.
Guardrails
Injection screening rewritten
The old screen matched patterns, which meant it caught the phrasings we had seen and missed the ones we had not. It now classifies intent before a prompt reaches a tool-using agent, and refuses rather than sanitises when it is not sure.
-
Security
-
-
Instruction-override attempts embedded in retrieved documents are now screened, not just user input.
-
Tool calls are checked against the caller's own permissions rather than the agent's.
-
PII redaction covers structured payloads, so an address inside a JSON tool result is masked like one in prose.
-
Improved
-
-
Screening runs in parallel with retrieval, which took the added latency from roughly 300ms to under 40ms.
-
Fixed
-
-
A moderation failure was logged and swallowed instead of blocking the response. It now fails closed.
AgentForge
Durable runs, resumable from any step
An agent run is now a record rather than a request. It survives a deploy, a worker restart and a provider outage, and picks up at the step it was on instead of starting the whole chain again at your expense.
-
Breaking
-
-
Agents are defined as classes rather than closures. The upgrade guide ships with a command that converts existing definitions.
-
The `agent_traces` table is replaced by `agent_runs` and `agent_steps`. The migration copies what it can and leaves the old table in place.
-
Added
-
-
Run and step tables with full input, output and token accounting on each step.
-
Human-in-the-loop approvals that hold a run open for days without holding a worker.
-
A replay console: re-run any step against a new prompt or model and diff the two outcomes.
-
Improved
-
-
Retries use the provider's own backoff headers instead of a fixed schedule.
Berkine platform
Licences, domains and updates on one page
Buyers were asking us which domains a key was registered against, which is a question the site should have been answering itself. Purchases now show the tier, the registered hosts and the date support and updates run to, per licence.
-
Added
-
-
Domain registration from the buyer area: add a production, staging and development host per licence.
-
A support window on every licence, so nobody has to work it out from an invoice date.
-
Support threads can be attached to a licence, arriving with the tier and version already on them.
-
Improved
-
-
Licence keys are issued the moment an order is marked paid rather than on the next scheduler run.
VectorBase
Hybrid search you can tune without a deploy
Retrieval quality is settings work, not code work, and it was living in code. Weighting, chunk sizes and reranking now sit in the admin UI where the person who can judge the answers can also change them.
-
Added
-
-
Keyword and vector weighting exposed as a setting, with a side-by-side preview of both result sets.
-
Reranking as an optional second pass, priced and timed on the same screen.
-
Chunking profiles per collection: contracts and chat logs no longer have to be split the same way.
-
Improved
-
-
Ingestion is incremental. Reindexing a 40,000-document collection went from hours to minutes.
-
Fixed
-
-
Documents deleted at source stayed searchable until the next full reindex.
Model Router
Budget-aware routing
Failover kept requests alive; it did not keep them affordable. The router now knows what each provider costs and what is left of the month, and picks accordingly rather than always reaching for the strongest model.
-
Added
-
-
Cost and latency budgets per route, with a cheaper model chosen as a budget nears its ceiling.
-
Local models as first-class targets alongside the hosted providers.
-
Improved
-
-
Health checks are passive, read from real traffic, so a cold provider is not marked down by a probe.
-
Streaming failover mid-response no longer discards the tokens already delivered.
-
Fixed
-
-
A provider returning a 429 with no retry header was retried immediately instead of being stood down.
VisionKit
Video, on the same pipeline as stills
The image pipeline was already queue-backed and scalable. Video now runs through the same one instead of a second stack beside it, which means one set of workers, one set of limits and one place to watch.
-
Added
-
-
Frame-interpolated video generation and upscaling, resumable per segment.
-
Signed, expiring URLs for generated media, served from object storage rather than the app.
-
Improved
-
-
Background removal is roughly 4x faster on CPU-only hosts, which is what most buyers deploy on.
-
Failed jobs keep their partial output for inspection instead of deleting it.
SupportMind
Drafts that cite what they read
An AI draft is only useful if the agent sending it can check it in seconds. Every draft now carries the passages it was built from, and escalation hands a human the thread with those citations intact.
-
Added
-
-
Inline citations on every drafted reply, linked to the source document and section.
-
Confidence thresholds per queue: below the line, the draft is held for review rather than sent.
-
Improved
-
-
Escalation carries the full context, so a human is not reading the conversation cold.
-
Doc ingestion follows sitemaps, which removed most of the manual URL entry on setup.
-
Fixed
-
-
Threads merged by an agent lost the original ticket reference in notification emails.
Usage Meter
Caps that fail closed
A soft cap that only warns is a billing surprise with extra steps. Hard caps now stop work at the boundary, and the boundary is checked when a job is picked up rather than when it was queued.
-
Added
-
-
Hard caps per tenant, per seat and per feature, enforced at dequeue.
-
Stripe usage records reconciled nightly, with a report of anything that did not match.
-
Improved
-
-
Soft alerts fire at 50, 80 and 95 per cent instead of only at the limit.
-
Fixed
-
-
Cached quota counters could drift after a failed transaction, letting a tenant over-spend by a few requests.
VoiceLine
Diarisation in realtime, on one socket
Transcription and speaker separation were two passes, which meant the second one arrived after the conversation had moved on. Both now stream over a single transport, labelled as they go.
-
Added
-
-
Live speaker labels, corrected retroactively as more audio arrives.
-
Word-level timestamps on the transcript, for clipping and captioning.
-
Improved
-
-
Reconnection resumes from the last acknowledged chunk rather than the start of the stream.
-
Text-to-speech voices are cached per tenant, cutting first-byte latency to about 200ms.
PromptStudio
Promote a winner without a deploy
Prompts change more often than code does, and shipping one through a release pipeline made experiments cost a deploy each. A tested prompt can now be promoted from the UI, with the version it replaced kept for rollback.
-
Added
-
-
A/B splits with per-variant cost, latency and rating, and a promote button on the winner.
-
Diffs between any two prompt versions, including the model and parameters they ran with.
-
Improved
-
-
Versions are immutable once used in production, so a trace always describes what actually ran.
-
Fixed
-
-
Rolling back a prompt left the previous variant assignment on active sessions.