.NET

Install the .NET SDK and start building AI applications with semantic memory.

Build AI applications with C# using the Graphlit SDK.

New to Graphlit? Complete the Quickstart tutorial for a hands-on introduction.


Installation

Install the Graphlit client with NuGet:

dotnet add package Graphlit

Requirements:


Quick Start

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Graphlit;

class Program
{
    static async Task Main(string[] args)
    {
        // Reads from environment variables
        using var httpClient = new HttpClient();
        var graphlit = new Graphlit(
            httpClient,
            organizationId: Environment.GetEnvironmentVariable("GRAPHLIT_ORGANIZATION_ID"),
            environmentId: Environment.GetEnvironmentVariable("GRAPHLIT_ENVIRONMENT_ID"),
            jwtSecret: Environment.GetEnvironmentVariable("GRAPHLIT_JWT_SECRET")
        );
        
        // Ingest content
        var response = await graphlit.IngestText.ExecuteAsync(
            name: "Product Requirements",
            text: "Our AI agent needs persistent memory across sessions..."
        );
        
        response.EnsureNoErrors();
        
        Console.WriteLine($"✅ Memory created: {response.Data?.IngestText?.Id}");
    }
}

Configuration

Environment Variables (Production)

Option 1: launchSettings.json (Development)

{
  "profiles": {
    "MyApp": {
      "environmentVariables": {
        "GRAPHLIT_ORGANIZATION_ID": "your_actual_org_id",
        "GRAPHLIT_ENVIRONMENT_ID": "your_actual_env_id",
        "GRAPHLIT_JWT_SECRET": "your_actual_jwt_secret"
      }
    }
  }
}

Option 2: User Secrets (Development)

dotnet user-secrets init
dotnet user-secrets set "GRAPHLIT_ORGANIZATION_ID" "your_actual_org_id"
dotnet user-secrets set "GRAPHLIT_ENVIRONMENT_ID" "your_actual_env_id"
dotnet user-secrets set "GRAPHLIT_JWT_SECRET" "your_actual_jwt_secret"

Option 3: appsettings.json (Never commit secrets)

{
  "Graphlit": {
    "OrganizationId": "",
    "EnvironmentId": "",
    "JwtSecret": ""
  }
}

Load with IConfiguration:

using Microsoft.Extensions.Configuration;

var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddEnvironmentVariables()  // Overrides appsettings
    .AddUserSecrets<Program>()  // Development secrets
    .Build();

using var httpClient = new HttpClient();
var graphlit = new Graphlit(
    httpClient,
    organizationId: config["Graphlit:OrganizationId"],
    environmentId: config["Graphlit:EnvironmentId"],
    jwtSecret: config["Graphlit:JwtSecret"]
);

Common Patterns

Ingest Content

// From URL
var response = await graphlit.IngestUri.ExecuteAsync(
    uri: "https://example.com/document.pdf"
);

response.EnsureNoErrors();

// From text
var textResponse = await graphlit.IngestText.ExecuteAsync(
    name: "Meeting Notes",
    text: "Discussion about Q4 planning..."
);

textResponse.EnsureNoErrors();

Search Memory

var input = new ContentFilter
{
    Search = "quarterly planning"
};

var response = await graphlit.QueryContents.ExecuteAsync(input);

response.EnsureNoErrors();

foreach (var content in response.Data?.Contents?.Results ?? Array.Empty<Content>())
{
    Console.WriteLine($"📄 {content.Name}");
}

Chat with Context

// Create conversation
var conversationInput = new ConversationInput
{
    Name = "AI Assistant"
};

var conversation = await graphlit.CreateConversation.ExecuteAsync(conversationInput);

conversation.EnsureNoErrors();

// Ask questions
var response = await graphlit.PromptConversation.ExecuteAsync(
    prompt: "What did we discuss about Q4 planning?",
    id: conversation.Data?.CreateConversation?.Id
);

response.EnsureNoErrors();

Console.WriteLine(response.Data?.PromptConversation?.Message?.Message);

Next Steps

Quickstarts:

Examples:

Resources:

Last updated

Was this helpful?