diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index f95435e03..ee429eeef 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -30,6 +30,7 @@ jobs:
Hosting.Dapr.Tests,
Hosting.DbGate.Tests,
Hosting.Deno.Tests,
+ Hosting.DuckDB.Tests,
Hosting.Elasticsearch.Extensions.Tests,
Hosting.Flagd.Tests,
Hosting.Flyway.Tests,
@@ -68,6 +69,7 @@ jobs:
Hosting.Zitadel.Tests,
# Client integration tests
+ DuckDB.NET.Data.Tests,
GoFeatureFlag.Tests,
KurrentDB.Tests,
MassTransit.RabbitMQ.Tests,
diff --git a/CommunityToolkit.Aspire.slnx b/CommunityToolkit.Aspire.slnx
index 73ed3e46d..39a8a0494 100644
--- a/CommunityToolkit.Aspire.slnx
+++ b/CommunityToolkit.Aspire.slnx
@@ -33,6 +33,11 @@
+
+
+
+
+
@@ -204,6 +209,7 @@
+
@@ -238,6 +244,7 @@
+
@@ -265,6 +272,7 @@
+
@@ -299,6 +307,7 @@
+
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 668a4938a..e7fc092dd 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -75,6 +75,7 @@
+
diff --git a/examples/duckdb/CommunityToolkit.Aspire.DuckDB.Api/CommunityToolkit.Aspire.DuckDB.Api.csproj b/examples/duckdb/CommunityToolkit.Aspire.DuckDB.Api/CommunityToolkit.Aspire.DuckDB.Api.csproj
new file mode 100644
index 000000000..849acf26d
--- /dev/null
+++ b/examples/duckdb/CommunityToolkit.Aspire.DuckDB.Api/CommunityToolkit.Aspire.DuckDB.Api.csproj
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/examples/duckdb/CommunityToolkit.Aspire.DuckDB.Api/Program.cs b/examples/duckdb/CommunityToolkit.Aspire.DuckDB.Api/Program.cs
new file mode 100644
index 000000000..1c9a56ad2
--- /dev/null
+++ b/examples/duckdb/CommunityToolkit.Aspire.DuckDB.Api/Program.cs
@@ -0,0 +1,123 @@
+using DuckDB.NET.Data;
+
+var builder = WebApplication.CreateBuilder(args);
+
+builder.AddServiceDefaults();
+builder.Services.AddProblemDetails();
+
+builder.AddDuckDBConnection("analytics");
+
+var app = builder.Build();
+app.UseExceptionHandler();
+app.MapDefaultEndpoints();
+
+await SeedDatabase(app);
+
+app.MapGet("/", () => "DuckDB Analytics API");
+
+var analyticsGroup = app.MapGroup("/analytics");
+
+analyticsGroup.MapGet("/summary", async (DuckDBConnection db) =>
+{
+ await db.OpenAsync();
+ using var command = db.CreateCommand();
+ command.CommandText = """
+ SELECT
+ category,
+ COUNT(*) as total_orders,
+ CAST(SUM(amount) AS DOUBLE) as total_revenue,
+ CAST(AVG(amount) AS DOUBLE) as avg_order_value
+ FROM orders
+ GROUP BY category
+ ORDER BY total_revenue DESC
+ """;
+ using var reader = await command.ExecuteReaderAsync();
+
+ var results = new List