Picasso.AgentFramework.Dashboard 0.1.6

dotnet add package Picasso.AgentFramework.Dashboard --version 0.1.6
                    
NuGet\Install-Package Picasso.AgentFramework.Dashboard -Version 0.1.6
                    
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="Picasso.AgentFramework.Dashboard" Version="0.1.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Picasso.AgentFramework.Dashboard" Version="0.1.6" />
                    
Directory.Packages.props
<PackageReference Include="Picasso.AgentFramework.Dashboard" />
                    
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 Picasso.AgentFramework.Dashboard --version 0.1.6
                    
#r "nuget: Picasso.AgentFramework.Dashboard, 0.1.6"
                    
#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 Picasso.AgentFramework.Dashboard@0.1.6
                    
#: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=Picasso.AgentFramework.Dashboard&version=0.1.6
                    
Install as a Cake Addin
#tool nuget:?package=Picasso.AgentFramework.Dashboard&version=0.1.6
                    
Install as a Cake Tool

Picasso for Microsoft Agent Framework

See what your agents are actually emitting — and what compaction quietly threw away.

A local conversation store and read-only dashboard for Microsoft Agent Framework. Two small NuGet packages, one line of code each, a SQLite file next to your app. No Docker, no cloud account, no telemetry. Nothing leaves your machine.

Use it to persist MAF agent chat history to a database by conversation id · keep conversations across application restarts · implement a custom ChatHistoryProvider · see what your agent emitted, with tool calls, arguments and timings · detect context compaction silently dropping the first user message · inspect agent behaviour locally without standing up a self-hosted observability stack.

dotnet add package Picasso.AgentFramework.Persistence
dotnet add package Picasso.AgentFramework.Dashboard

Why

Agent Framework's compaction rewrites the working set when the context window fills. It does this silently, and the opening user message is often the first casualty — the agent carries on with no record of what it was originally asked, and nothing tells you it happened.

Picasso keeps the full conversation regardless, and shows you the moment the context was cut:

14:22:19   BillingAgent    A refund of £24.99 has been issued.
14:22:11   ⚠ COMPACTION    12 messages → 3
                           dropped: the first user message
14:22:07   User            why was I charged twice this month

The Picasso dashboard


Install

dotnet add package Picasso.AgentFramework.Persistence

Attach it to your agent:

var agent = chatClient.AsAIAgent(new ChatClientAgentOptions
{
    Name = "Assistant",
    ChatHistoryProvider = new SqliteChatHistoryProvider("./picasso.db")
});

That is the whole integration. Conversations now persist to picasso.db beside your app and survive restarts.

Add the dashboard

dotnet add package Picasso.AgentFramework.Dashboard
app.MapPicasso();   // then open /picasso

What you get

Conversations that survive a restart Stored by conversation id, in order, roles intact
No duplicated messages Appends only what is new; earlier rows are never rewritten
Conversations stay isolated One conversation never bleeds into another
A record of every compaction Before and after counts, and whether the first user message was lost
A local dashboard Live stream of what each agent said, called and dropped

What it does not do

Stated plainly, because a tool that hides its limits gets found out by a stranger.

  • The dashboard is read-only. No delete, replay, edit or export. Every route is a GET.
  • It does not stop compaction. It records what compaction removed. Agent Framework still decides what the model sees; Picasso makes the loss visible and keeps the full history.
  • Compaction detection is early. It infers a compaction by comparing what the model was sent against what is stored. It never invents one — but if your setup replays history in a way it does not recognise, it may miss one silently. Your conversations are still stored in full; only the compaction banner would be absent. If you hit that, please open an issue — a real-world repro is exactly what this needs.
  • SQLite only, for now. SQL Server and Postgres are next.
  • It is not a production observability platform. It is a local development tool, in the same spirit as the Aspire dashboard.

Add the store to your .gitignore

The database sits next to your app so it is easy to find. That also means it is easy to commit by accident — and it contains your conversation history.

picasso.db
picasso.db-shm
picasso.db-wal

If you passed a different filename, ignore that one instead — the lines above only cover the default. A safer catch-all if you have no other SQLite files in the project:

*.db
*.db-shm
*.db-wal

Privacy

Everything is local. There is no phone-home, no analytics, no account, and no network call of any kind. The database is a file on your disk; the dashboard is served by your own application.


Requirements

  • .NET 8.0, 9.0 or 10.0 — the packages multi-target all three
  • Microsoft.Agents.AI 1.20.0 or later

Licence

MIT. Fork it, vendor it, support it internally — if this project ever goes quiet, you are not stuck.


Built by 1picassoai. Not affiliated with Microsoft.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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
0.1.6 101 9/10/2026