Skip to main content
This document covers how to build and distribute the aipkg CLI binary and AI•Pkg.Core NuGet package. For the public API surface and command syntax, see the SDK Interface spec.

AI•Pkg.Core NuGet Package

Project Configuration

Add to AI•Pkg.Core.csproj:
<PropertyGroup>
  <TargetFramework>net10.0</TargetFramework>
  <PackageId>AI•Pkg.Core</PackageId>
  <IsAotCompatible>true</IsAotCompatible>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
  <DocumentationFile>AI•Pkg.Core.xml</DocumentationFile>
  <NoWarn>$(NoWarn);CS1591</NoWarn>
</PropertyGroup>

Publishing to NuGet.org

  1. Set <PackageVersion> in AI•Pkg.Core.csproj
  2. dotnet pack -c Release
  3. dotnet nuget push AI•Pkg.Core.{version}.nupkg --api-key {key} --source https://api.nuget.org/v3/index.json
CI/CD: GitHub Actions workflow on v* tag push.

aipkg CLI: Native AOT

Why Native AOT

The aipkg CLI ships as a single self-contained binary with no .NET runtime requirement. Users on platforms where .NET is not installed (common for Claude Code users) get a zero-dependency install.

Publish Configuration

Add to AI•Pkg.CLI.csproj:
<PropertyGroup>
  <TargetFramework>net10.0</TargetFramework>
  <PublishAot>true</PublishAot>
  <StripSymbols>true</StripSymbols>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Publish command per platform:
dotnet publish -r {rid} --self-contained -c Release -o ./dist/{rid}

RID Matrix

RIDPlatformBinary Name
win-x64Windows x64aipkg.exe
linux-x64Linux x64aipkg
linux-arm64Linux ARM64aipkg
osx-x64macOS Intelaipkg
osx-arm64macOS Apple Siliconaipkg
Target binary size: < 30 MB per platform.

Distribution Channels

ChannelCommand / URLNotes
Direct downloadGitHub ReleasesPrimary; all platforms
Windowswinget install aipkgSubmit to Windows Package Repository
macOSbrew install aipkgSubmit to Homebrew core or tap
Linux (future)apt install aipkgPost-MVP; requires .deb packaging
Scriptcurl -fsSL https://aipkg.org/install.sh | shDetects platform, downloads from GitHub Releases

GitHub Actions CI/CD Pipeline

# .github/workflows/release-cli.yml
on:
  push:
    tags: ['v*']

jobs:
  build:
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            rid: linux-x64
          - os: ubuntu-latest
            rid: linux-arm64
          - os: macos-latest
            rid: osx-x64
          - os: macos-latest
            rid: osx-arm64
          - os: windows-latest
            rid: win-x64
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-dotnet@v4
        with: { dotnet-version: '10.x' }
      - run: dotnet publish src/AI•Pkg.CLI -r ${{ matrix.rid }} --self-contained -c Release -o dist/${{ matrix.rid }}
      - uses: actions/upload-artifact@v4
        with:
          name: aipkg-${{ matrix.rid }}
          path: dist/${{ matrix.rid }}/

TypeScript SDK Strategy (Post-MVP)

The TypeScript SDK is scoped to post-MVP. When implemented:
  1. @aipkg/core — Registry client and manifest parsing. Published to npm.
  2. Platform packages@aipkg/claude-code, @aipkg/copilot, @aipkg/cursor — thin wrappers with platform-specific install path logic.
Source lives in a separate repository (aipkg-js). Build tooling: tsc + tsup for dual CJS/ESM output. See SDK Interface spec for the normative TypeScript API surface.