Gridlet.AspNetCore 1.13.0

dotnet add package Gridlet.AspNetCore --version 1.13.0
                    
NuGet\Install-Package Gridlet.AspNetCore -Version 1.13.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Gridlet.AspNetCore" Version="1.13.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Gridlet.AspNetCore" Version="1.13.0" />
                    
Directory.Packages.props
<PackageReference Include="Gridlet.AspNetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Gridlet.AspNetCore --version 1.13.0
                    
#r "nuget: Gridlet.AspNetCore, 1.13.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Gridlet.AspNetCore@1.13.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Gridlet.AspNetCore&version=1.13.0
                    
Install as a Cake Addin
#tool nuget:?package=Gridlet.AspNetCore&version=1.13.0
                    
Install as a Cake Tool

<p align="center"> <img src="assets/gridlet-logo.png" width="160" height="160" alt="Gridlet logo" /> </p>

<h1 align="center">Gridlet</h1>

Gridlet is an embeddable ASP.NET Core database management interface. Add it to an existing application to browse schemas and data, inspect keys, indexes and relationships, edit database objects, run queries, publish APIs, and talk to your data with an integrated AI agent, all through the host application's authentication, authorisation, routing, logging and deployment model.

<p align="center"> <img src="assets/screenshot-1.png" width="100%" alt="Gridlet table browser showing customer data" /> </p>

Highlights

  • Embed a complete database workspace at /gridlet or a custom route.
  • Connect SQL Server and SQLite databases side by side.
  • Browse tables, views, keys, indexes, relationships, routines and triggers where supported.
  • Query, save and export data; optionally enable row editing and schema design.
  • Publish queries as protected HTTP endpoints with typed parameters.
  • Add natural-language database exploration through the optional AI package.
  • Read agent responses aloud with the browser's own voice.
  • Reuse the host application's ASP.NET Core security and operational infrastructure.

Multiple databases, one interface

Register one or more SQL Server and SQLite connections, then switch between them from the Gridlet header. The interface adapts to the capabilities of the selected provider.

builder.Services
    .AddGridlet()
    .AddSqlServer(sqlServerConnectionString)
    .AddSqlite(sqliteConnectionString);

<p align="center"> <img src="assets/screenshot-4.png" width="720" alt="Gridlet connection selector showing SQLite and SQL Server connections in one app" /> </p>

Query, edit and design

Run SQL with streamed results, save useful queries, and export CSV or JSON. Per-connection feature gates can enable or hide row editing, ad-hoc SQL and schema-changing tools, while the database identity remains the final permission boundary.

Table imports accept CSV or JSON object arrays, optionally map source headers to target columns, batch inserts, and commit all rows atomically. In CSV, an unquoted empty field imports as NULL, while "" imports as an empty string. Direct API clients must send X-Gridlet-Request: 1 with the multipart request; this non-simple header protects cookie-authenticated hosts from cross-site form submissions.

A query tab can also pin its connection as a session, so an explicit transaction spans several executions: begin, run the change, look at the result, then commit or roll back. The toolbar shows whether a transaction is open, and closing the session or the tab rolls it back.

<p align="center"> <img src="assets/screenshot-3.png" width="100%" alt="Gridlet query editor showing order summary results" /> </p>

Talk with your database

The optional prerelease Gridlet.AgentFramework package adds an Ask workspace powered by Microsoft Agent Framework. It can explain schema, generate SQL, run bounded read-only queries, and work with published GET endpoints.

Schema, data and published-API access are shared independently for each conversation. The host sets the maximum allowed access, the user chooses what to share, and the agent can request missing access through an auditable Allow / Deny prompt. Gridlet never gives the agent write or DDL tools.

Profiles can use local Codex, Claude Code or GitHub Copilot subscriptions, hosted OpenAI or Anthropic APIs, OpenAI-compatible endpoints, or Ollama.

<video src="https://github.com/user-attachments/assets/f62b6df5-9681-4a37-b133-3141b31f568d" controls></video>

<p align="center"><em>Gridlet Ask workspace demonstration.</em></p>

Publish queries as APIs

Publish a query as a GET, POST, PUT, PATCH or DELETE endpoint, declare typed parameters, attach an existing ASP.NET Core authorization policy, and test it in the built-in request preview. Endpoints are served under /gridlet/pub by default and can stream JSON or NDJSON responses.

<p align="center"> <img src="assets/screenshot-2.png" width="620" alt="Gridlet published API preview showing a formatted JSON response" /> </p>

Quick start

Gridlet currently targets .NET 10. Install the ASP.NET Core package and a database provider:

dotnet add package Gridlet.AspNetCore
dotnet add package Gridlet.SqlServer

Register a connection and map Gridlet:

using Gridlet;

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddGridlet()
    .AddSqlServer(builder.Configuration.GetConnectionString("Default")!);

var app = builder.Build();

app.MapGridlet();

app.Run();

Open /gridlet. By default, every Gridlet endpoint uses the host application's default authorization policy. The mount path can be changed with app.MapGridlet("/internal/database").

For SQLite, install Gridlet.Sqlite and replace AddSqlServer with AddSqlite.

SQLite attachments are an explicit server-side allow-list. Configure their names and filenames on the connection; the browser can select main or one of these aliases but can never choose an arbitrary host path:

.AddSqlite(sqliteConnectionString, connection =>
{
    connection.SqliteAttachments["archive"] = "/data/archive.db";
});

Essential configuration

Configure security and connection capabilities when registering Gridlet:

builder.Services
    .AddGridlet(options =>
    {
        options.Security.AuthorizationPolicy = "DatabaseAdministrators";
        options.Limits.MaxQueryResultRows = 10_000;
        options.PublishedApiRoutePrefix = "pub";
    })
    .AddSqlServer(connectionString, connection =>
    {
        connection.AllowSqlExecution = true;
        connection.AllowWrites = false;
        connection.AllowDdl = false;

        connection.AllowAgentSchemaAccess = true;
        connection.AllowAgentDataAccess = true;
        connection.AllowAgentApiAccess = true;
        connection.AgentDataConnectionString = readOnlyConnectionString;
    });

AllowSqlExecution, AllowWrites and AllowDdl control separate UI and API capabilities. Use a least-privileged database identity because SQL submitted through the query editor has the permissions of its configured connection.

Options can also be bound with AddGridletFromConfiguration. Hosts that do not need the embedded UI can map MapGridletApi or MapGridletPublished instead.

Security

  • Gridlet requires the host's default authorization policy unless a named policy or explicit anonymous access is configured.
  • Connections are an explicit allow-list; Gridlet does not expose other application connection strings automatically.
  • Dynamic identifiers are checked against database metadata and values are parameterised.
  • Paging, result-size and command-timeout limits are enforced server-side.
  • Query execution, writes, DDL and published-API calls produce structured audit events.
  • Agent data access can use a separate read-only connection and is always limited to bounded, read-only tools.

Packages

Package Purpose
Gridlet.AspNetCore ASP.NET Core registration, endpoints and embedded web interface.
Gridlet.SqlServer SQL Server provider.
Gridlet.Sqlite SQLite provider.
Gridlet.AgentFramework Optional prerelease AI integration.
Gridlet.Voice Optional read-aloud support for agent responses.
Gridlet.Core Provider abstractions, models, options and auditing.

Provider support

Provider Coverage
SQL Server Databases, schemas, tables, views, keys, indexes, relationships, procedures, functions, triggers, descriptions, dependencies, sequences, queries, import/export, writes and DDL.
SQLite The main and host-configured attached databases; tables, views, keys, indexes, relationships, generated columns, triggers, inferred dependencies, queries, import/export, writes and DDL. Connection-local temp objects are intentionally omitted because they cannot be safely shared across pooled HTTP requests.

Provider-specific concepts are omitted when they do not apply; for example, SQLite does not expose stored procedures, functions or user-created schemas.

Demo

The sample application creates a seeded SQLite database and, on Windows when available, a SQL Server LocalDB database:

dotnet run --project samples/Gridlet.Demo

Open http://localhost:5088/gridlet.

Development

dotnet build
dotnet test --configuration Release

The test suite covers the core services, real endpoint pipeline, temporary SQLite databases and the embedded interface through headless Chromium. SQL Server is not required for the tests.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.13.0 50 8/15/2026
1.12.0 51 8/14/2026
1.11.0 49 8/11/2026
1.10.0 47 8/11/2026
1.9.1 86 8/10/2026
1.8.0 95 8/9/2026
1.7.0 96 8/9/2026
1.6.0 98 8/8/2026
1.4.0 95 8/8/2026
1.3.0 107 7/13/2026
1.2.0 112 7/12/2026
1.1.1 104 7/12/2026
1.1.0 105 7/11/2026