Release Notes

Changelog

Review the new features, improvements, and fixes shipped in each Monospace release.
0.4.0July 14, 2026

Project to Workspace rename and authentication audit logs

This release renames the core Project resource to Workspace — a breaking change — and adds engine-side audit logging for authentication events, alongside a batch of Studio and API improvements and fixes.

Project is now Workspace

Breaking change. The rename reaches the database schema, so an existing instance will not boot against the old layout. Back up your database, then run the migration below once, directly against your system database, before starting the upgraded instance. It renames the system tables, columns, indexes, and foreign-key constraints; rewrites historical audit actions and invitation payloads; and renames every per-workspace monospace_project_<name>_meta and _data schema to monospace_workspace_<name>_…. The whole script runs in one transaction and takes an ACCESS EXCLUSIVE lock, so run it during a maintenance window.

The resource you create inside an organization is now a workspace. In the Studio, "Project" becomes "Workspace" everywhere — the navigation selector, settings, members, and invitations. The change is uniform on the wire:

  • REST and MCP — the workspace-scoped path is /api/{workspace}/… (items, assets, openapi, mcp), and the system endpoints move from /api/system/projects to /api/system/workspaces.
  • SDKcreateClient takes a workspace option instead of project, and the generator config in monospace.config.ts uses workspace too.
  • Fields and payloadsprojectId becomes workspaceId, and invitation project_roles become workspace_roles.
  • Entitlementsproject becomes workspace, projectMembers becomes workspaceMembers, and projectSettings becomes workspaceSettings.
  • Audit loguser.join_project.v1 and user.remove_project.v1 become user.join_workspace.v1 and user.remove_workspace.v1.

See Organization for the resource hierarchy and REST API for the request shape.

Rijk van ZantenShipped byRijk van Zanten

Audit logs for authentication events

Monospace now records authentication activity in the audit log: successful and failed logins, logouts, token refreshes, and password reset requests, confirmations, and changes. Each entry captures the actor, their IP address, and the outcome — and failures are recorded without revealing whether an account exists.

See Audit Logs for the full list of actions and how to query them.

Maxence MaireShipped byMaxence Maire
0.3.0July 8, 2026

API request panels and AI tool approvals

This release adds an API Request code panel to every collection, a tool-approval workflow for the AI assistant, many-to-many file fields, and a total-count option for read queries.

API Request Code Panel

Reproducing a Studio view in code meant hand-writing the request. Now every content collection has an API Request panel that turns what you're viewing — your fields, filter, sort, and pagination, or the open item and its values — into ready-to-run SDK and cURL snippets you can copy in one click. Open it from the code button in the header; it docks beside your content on wide screens and slides in as a drawer on narrow ones.

See SDK and REST API for client setup.

Guillaume ChauShipped byGuillaume ChauHugo TorzuoliShipped byHugo TorzuoliHannes KüttnerShipped byHannes Küttner

AI Assistant Tool Approvals

The AI assistant used to run deletes and schema changes without a checkpoint. Now it pauses first: deleting items or changing the schema surfaces a Tool approval required panel where you approve, deny, or send back a different instruction. Tool inputs and outputs render as readable YAML instead of raw JSON, and approval never grants access beyond your own permissions.

See AI for the assistant and its tools.

Rijk van ZantenShipped byRijk van Zanten

Many-to-Many File Fields

A File field held a single file, so attaching several meant modeling a junction collection by hand. Now picking the Multiple Files option when adding a File field creates a many-to-many relation to your asset library from just a field name — the junction collection is generated and hidden for you, and attached files show as thumbnails in the item form and table.

See Data Model for fields and relations.

Marc BackesShipped byMarc Backes

Total Count for Read Queries

Getting a total count used to mean a second query — or fetching every matching item just to count them. Now you can pass a meta option with totalCount on a read query to get the total number of matching items — ignoring limit and offset — alongside the data in one request. It's a top-level option; nested relation reads don't accept it.

See Get the Total Count for the request and response shape.

Kirill BulatovShipped byKirill Bulatov
0.2.1July 3, 2026

Stricter query validation and access fixes

This release tightens API query validation, makes the policy "All" access override grant full access, and fixes Studio issues across permissions, filtering, and the schema visualizer.

Stricter Query Validation

Invalid field selections on a primitive field used to be accepted silently. Now the query engine rejects them: selecting nested subfields on a primitive field — or passing arguments to one — is rejected as an invalid query. Nested selections and arguments still work on relation fields, where they apply.

See Field Selection for valid field, relation, and nested-query syntax.

Maxence MaireShipped byMaxence Maire

Accurate "All" Access Override

A filter left on a single action used to survive the "All" access override, so "All" didn't actually grant full access. Now, in the policy editor, a collection's "All" override grants genuine unrestricted access — it clears any custom per-action filters and opens create, read, update, and delete together.

See Access Control for how policies and collection permissions combine.

Florian WachmannShipped byFlorian Wachmann
0.2.0July 2, 2026

A refreshed Studio, onboarding, and native JSON

This release refreshes the Studio, adds guided onboarding and a project connection screen, moves JSON fields to native JSON, introduces branded data source presets and permission-aware controls, and ships configurable CORS, query-parameter authentication, and anonymous usage telemetry.

Refreshed Studio Design

The Studio interface is restyled from the chrome inward. Project headers, the sidebar, and footers use consistent heights, spacing, and typography. Breadcrumbs now show the item you're viewing on a detail page, and the collection back control is labeled with the collection name.

Hugo TorzuoliShipped byHugo TorzuoliReza BaarShipped byReza BaarFlorian WachmannShipped byFlorian Wachmann

Onboarding

New instances walk you through first-run setup. When no user exists yet, Monospace prompts you to create the first administrator — name, email, password, and terms acceptance. When an administrator was provisioned automatically, you confirm your details and accept the terms the first time you sign in.

Marc BackesShipped byMarc Backes

Connect to Your Project

Connecting a client to a project used to mean assembling the base URL and minting a key by hand. A new connection screen now gathers everything in one place: tabbed setup instructions for the SDK, MCP server, and REST API, an API key generated on the spot — personal or through a service account — and deep links to add the project's MCP server to supported tools.

See SDK, MCP, and REST API for client setup.

Marc BackesShipped byMarc Backes

Native JSON Fields

JSON fields used to travel as encoded strings you had to parse and re-stringify yourself. Now they use native JSON end to end: the API returns and accepts raw JSON, and in the Studio new JSON fields default to the native JSON type, edit in a pretty-printed code editor, and display as compact single-line JSON in tables.

Breaking change. JSON fields now use native JSON on the wire. The API returns them as raw JSON instead of encoded strings and no longer accepts a stringified JSON value on input, so update any client that parsed the old string form or sent JSON as a string. Filtering a JSON field also requires an explicit operator now — { filter: { metadata: 2 } } is rejected; use { filter: { metadata: { _eq: 2 } } }.
Flavian DesverneShipped byFlavian DesverneGuillaume ChauShipped byGuillaume ChauHannes KüttnerShipped byHannes Küttner

Branded Data Source Presets

The data source picker listed only raw database engines. Now it opens on a branded connector picker: alongside PostgreSQL, MySQL, MariaDB, and SQLite, you can pick managed providers like Neon, Aiven, PlanetScale, and Aurora — each with its own name, logo, and setup notes. The preset is display metadata; the underlying connector still determines how the source connects.

See Connectors for supported databases.

Hannes KüttnerShipped byHannes Küttner

Permission-Aware Studio

The Studio didn't reflect your permissions — it showed controls and navigation you couldn't actually use. Now it reflects them throughout: controls you can't use are disabled with a tooltip explaining why, role and policy pickers list only the values you may assign, and navigation entries you can't access are hidden. Opening a restricted page by URL redirects you to one you can reach.

These gates are a convenience layer. The backend remains the source of truth for every permission check.
Hannes KüttnerShipped byHannes Küttner

Dedicated Project Schemas

User collections used to share the public schema, where separate projects could collide. Now each project uses two dedicated schemas on the system data source: monospace_<project>_meta for system metadata and monospace_<project>_data for the collections you create. When a data source exposes more than one namespace, the Add Collection form also lets you choose which namespace a new collection belongs to.

Breaking change. On the first boot after upgrading, Monospace provides migration instructions for moving an existing project to the new layout — monospace_<project> is renamed to monospace_<project>_meta, and user collections move from public into monospace_<project>_data. Back up your database before updating.
Flavian DesverneShipped byFlavian DesverneMarc BackesShipped byMarc Backes

Configurable CORS

Browser apps on another origin couldn't call your API. Now the engine can send CORS headers so they can. CORS is off by default — enable it with MONOSPACE_CORS__ENABLED and set the allowed origins with MONOSPACE_CORS__ORIGIN.

See CORS for the full configuration.

Hannes KüttnerShipped byHannes Küttner

Access Tokens in Query Parameters

Passing an access token used to require the Authorization header. Now you can pass it as an access_token query parameter too, alongside the header and the session cookie — for clients that can't set request headers. Sending more than one of these at once is rejected with a 400.

See Authentication for all token sources.

Rijk van ZantenShipped byRijk van Zanten

Anonymous Usage Telemetry

Monospace sends anonymous usage telemetry to guide development. Pings carry a random install ID, the version, a configuration snapshot, and operation counts — never credentials, connection details, or your data. Disable scheduled telemetry with MONOSPACE_TELEMETRY__ENABLED=false. Instance-owner details captured during onboarding sync separately; opt out with MONOSPACE_INSTANCE_OWNER_SYNC_ENABLED=false.

See Telemetry for the opt-out variables.

Hannes KüttnerShipped byHannes KüttnerBram GeronShipped byBram Geron
0.1.0June 23, 2026

Single sign-on, MCP, and the AI assistant

This release adds single sign-on, an MCP server for AI agents, audit logging, MySQL and MariaDB data sources, and an in-Studio AI assistant.

Single Sign-On

Let members sign in with your organization's identity provider instead of a Monospace password. Set up Google, GitHub, Microsoft Entra, Okta, and other OAuth 2.0 providers from Settings → Sign-in Providers — common providers come with presets.

See Configure SSO to connect a provider.

Reza BaarShipped byReza BaarFlavian DesverneShipped byFlavian Desverne

MCP Server

Connect AI agents to your project through a Model Context Protocol server. Each project exposes its own endpoint at /api/{project}/mcp over streamable HTTP. Agents authenticate with an API key and can query, create, update, and delete items, inspect and modify the schema, and list data sources. Every call runs under the permissions of the key you connect with.

See Configure MCP for setup and client configuration.

Rijk van ZantenShipped byRijk van Zanten

Audit Logs

Monospace now records key activity — user and account changes, invitations, project membership, and schema migrations — to an audit log. Each entry captures who made the change, the outcome, and when it happened. Administrators can read and filter the log through the system API.

See Audit Logs for the event catalog and how to query them.

Marc BackesShipped byMarc BackesFlavian DesverneShipped byFlavian Desverne

MySQL & MariaDB

Connect MySQL and MariaDB databases as data sources, alongside PostgreSQL. Add a connection from Data Model → Data Sources using the connection parameters or a connection string, with optional TLS.

See MySQL and MariaDB for connection options.

Bram GeronShipped byBram Geron

AI Assistant

Chat with an AI assistant directly in the Studio. It can query your data, create, update, and delete items, and read or change your schema — all under your own permissions. Configure an AI provider under Settings → AI.

See AI for the assistant and the MCP server.

Rijk van ZantenShipped byRijk van Zanten
Copyright © 2026