2
0
Files
gitcaddy-ai/README.md
logikonline 17581918dd feat: add client libraries, examples, and project documentation
Add Go and .NET client libraries for GitCaddy AI Service with usage examples. Include Business Source License 1.1, Makefile for build automation, and comprehensive README. Update service configuration and all service classes to support new client integration.
2026-01-19 10:44:24 -05:00

6.2 KiB

GitCaddy AI Service

AI-powered code intelligence service for GitCaddy. Provides code review, documentation generation, issue triage, and agentic workflows.

Features

  • Code Review: AI-powered pull request and commit reviews with security analysis
  • Code Intelligence: Explain code, suggest fixes, summarize changes
  • Issue Management: Auto-triage issues, suggest labels, generate responses
  • Documentation: Generate docs for code, commit messages
  • Agentic Workflows: Multi-step AI workflows for complex tasks
  • Chat Interface: Interactive AI assistant for developers

Architecture

┌─────────────────────────────────────────────────────────────────┐
│  GitCaddy Server (Go)                                           │
│  └── AI Client (gRPC)                                           │
│        │                                                        │
│        ▼                                                        │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  GitCaddy AI Service (.NET 9)                           │   │
│  │  ├── gRPC API                                           │   │
│  │  ├── MarketAlly.AIPlugin (Multi-provider AI)            │   │
│  │  └── License Validation                                 │   │
│  └─────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Quick Start

Prerequisites

  • .NET 9.0 SDK
  • Docker (optional)
  • API key for Claude, OpenAI, or Gemini

Development

# Clone the repository
git clone https://git.marketally.com/gitcaddy/gitcaddy-ai.git
cd gitcaddy-ai

# Set environment variables
export Providers__Claude__ApiKey="your-api-key"

# Run the service
cd src/GitCaddy.AI.Service
dotnet run

Docker

# Set environment variables
export CLAUDE_API_KEY="your-api-key"
export GITCADDY_AI_LICENSE="your-license-key"

# Run with Docker Compose
docker-compose up -d

Configuration

Configuration is done via appsettings.json or environment variables:

{
  "AIService": {
    "DefaultProvider": "Claude",
    "DefaultModel": "claude-sonnet-4-20250514",
    "MaxTokens": 4096,
    "Temperature": 0.7
  },
  "Providers": {
    "Claude": {
      "ApiKey": "sk-ant-...",
      "Enabled": true
    },
    "OpenAI": {
      "ApiKey": "sk-...",
      "Enabled": true
    }
  },
  "License": {
    "LicenseKey": "your-license-key"
  }
}

Environment variable format: AIService__DefaultProvider=Claude

API Reference

The service exposes a gRPC API defined in protos/gitcaddy_ai.proto.

Code Review

rpc ReviewPullRequest(ReviewPullRequestRequest) returns (ReviewPullRequestResponse);
rpc ReviewCommit(ReviewCommitRequest) returns (ReviewCommitResponse);

Code Intelligence

rpc SummarizeChanges(SummarizeChangesRequest) returns (SummarizeChangesResponse);
rpc ExplainCode(ExplainCodeRequest) returns (ExplainCodeResponse);
rpc SuggestFix(SuggestFixRequest) returns (SuggestFixResponse);

Issue Management

rpc TriageIssue(TriageIssueRequest) returns (TriageIssueResponse);
rpc SuggestLabels(SuggestLabelsRequest) returns (SuggestLabelsResponse);
rpc GenerateIssueResponse(GenerateIssueResponseRequest) returns (GenerateIssueResponseResponse);

Documentation

rpc GenerateDocumentation(GenerateDocumentationRequest) returns (GenerateDocumentationResponse);
rpc GenerateCommitMessage(GenerateCommitMessageRequest) returns (GenerateCommitMessageResponse);

Workflows & Chat

rpc StartWorkflow(StartWorkflowRequest) returns (stream WorkflowEvent);
rpc ExecuteTask(ExecuteTaskRequest) returns (ExecuteTaskResponse);
rpc Chat(stream ChatRequest) returns (stream ChatResponse);

Client Libraries

.NET Client

using GitCaddy.AI.Client;

var client = new GitCaddyAIClient("http://localhost:5051");

var response = await client.ReviewPullRequestAsync(new ReviewPullRequestRequest
{
    RepoId = 1,
    PullRequestId = 42,
    PrTitle = "Add feature X",
    Files = { new FileDiff { Path = "src/foo.cs", Patch = "..." } }
});

Console.WriteLine(response.Summary);

Go Client

import ai "git.marketally.com/gitcaddy/gitcaddy-ai/go/gitcaddy-ai-client"

client, err := ai.NewClient("localhost:5051")
if err != nil {
    log.Fatal(err)
}
defer client.Close()

resp, err := client.ReviewPullRequest(ctx, &pb.ReviewPullRequestRequest{
    RepoId:        1,
    PullRequestId: 42,
    PrTitle:       "Add feature X",
    Files:         []*pb.FileDiff{{Path: "src/foo.go", Patch: "..."}},
})

Licensing

GitCaddy AI is licensed under the Business Source License 1.1 (BSL-1.1).

License Tiers

Tier Features
Standard Code review, code intelligence, documentation, chat
Professional + Issue management, agentic workflows
Enterprise + Custom models, audit logging, SSO integration

Trial Mode

Without a license key, the service runs in trial mode with Standard tier features for 30 days.

Development

Building

dotnet build

Testing

dotnet test

Generating Proto Files

For Go client:

cd go/gitcaddy-ai-client
go generate

Integration with GitCaddy Server

Add the AI client to your GitCaddy server configuration:

[ai]
ENABLED = true
SERVICE_URL = http://localhost:5051

Support

License

Copyright 2026 MarketAlly. All rights reserved.

Licensed under the Business Source License 1.1 (BSL-1.1).