Andy.Settings.Client
2026.9.28-rc.75
dotnet add package Andy.Settings.Client --version 2026.9.28-rc.75
NuGet\Install-Package Andy.Settings.Client -Version 2026.9.28-rc.75
<PackageReference Include="Andy.Settings.Client" Version="2026.9.28-rc.75" />
<PackageVersion Include="Andy.Settings.Client" Version="2026.9.28-rc.75" />
<PackageReference Include="Andy.Settings.Client" />
paket add Andy.Settings.Client --version 2026.9.28-rc.75
#r "nuget: Andy.Settings.Client, 2026.9.28-rc.75"
#:package Andy.Settings.Client@2026.9.28-rc.75
#addin nuget:?package=Andy.Settings.Client&version=2026.9.28-rc.75&prerelease
#tool nuget:?package=Andy.Settings.Client&version=2026.9.28-rc.75&prerelease
Andy Settings
Centralized configuration and settings management for the Andy ecosystem.
Architecture
andy-settings/
├── src/
│ ├── Andy.Settings.Domain/ # Entities, enums (no dependencies)
│ ├── Andy.Settings.Application/ # Interfaces, DTOs, options (-> Domain)
│ ├── Andy.Settings.Infrastructure/ # EF Core, repositories, services (-> Domain, Application)
│ ├── Andy.Settings.Api/ # ASP.NET Core REST + MCP + Swagger (-> all)
│ ├── Andy.Settings.Client/ # Consumer HTTP client + OBO/M2M token providers
│ ├── Andy.Settings.Client.TestSupport/ # In-memory fakes for client consumers
│ └── Andy.Settings.Shared/ # Shared types
├── tools/
│ └── Andy.Settings.Cli/ # CLI tool (System.CommandLine + Spectre.Console)
├── tests/
│ ├── Andy.Settings.Tests.Unit/ # Unit tests (xUnit, Moq, FluentAssertions)
│ ├── Andy.Settings.Tests.Integration/ # Integration tests (WebApplicationFactory)
│ ├── Andy.Settings.Api.Tests/ # API tests
│ └── Andy.Settings.Client.Tests/ # Client library tests
├── client/ # Angular 18 SPA
├── examples/ # Multi-language API/MCP examples (C#, Python, JS, Go, Rust, PowerShell)
├── docs/ # MkDocs Material documentation
├── certs/ # Corporate CA certificates (gitignored)
├── Dockerfile # Multi-stage: Node + .NET + runtime
└── docker-compose.yml # PostgreSQL + API
Key Features
- Typed Definitions -- strongly typed setting schemas with validation and UI metadata
- Scoped Resolution -- 7-level scope precedence with deterministic resolution and explanation
- Encrypted Secrets -- AES-256-CBC + HMAC-SHA256 via Data Protection API, RBAC-gated access
- Conductor Integration -- embedded as 8th service in Conductor macOS app (port 9107, SQLite)
- Auth & RBAC -- Andy Auth (OIDC) + Andy RBAC with scope-aware permissions
- REST + Swagger + MCP -- full API with OpenAPI docs and Model Context Protocol tools
- CLI -- command-line tool with table/JSON output (auth via
ANDY_SETTINGS_TOKEN; OAuth device flow is not implemented) - Angular Web UI -- definitions browser, scope editor, secret management, audit views
- Dual Database -- PostgreSQL (shared) or SQLite (embedded/Conductor)
Quick Start
# Docker Compose (PostgreSQL mode)
docker compose up --build
# API: https://localhost:5300 | Swagger: https://localhost:5300/swagger
# Native development (SQLite mode)
dotnet run --project src/Andy.Settings.Api
cd client && npm install && npm start
Default Ports
| Service | Port |
|---|---|
| API HTTPS | 5300 |
| API HTTP | 5301 |
| PostgreSQL | 5438 |
| Angular dev | 4200 |
| Conductor proxy | 9100 |
| Conductor settings | 9107 |
| Andy Auth | 5001 |
| Andy RBAC | 5003 |
Commands and events
andy-settings follows the command / event split codified in ADR 0001 — Messaging:
- Commands stay on HTTP. Every imperative — set a value, create a definition, fetch a resolved setting — is a synchronous REST call against the API.
- Events go on NATS. Each successful write enqueues a
config.*.changedevent on the JetStreamANDY_DOMAINstream. Consumers (e.g.mcp-gateway) subscribe to the slice that names them; andy-settings never subscribes to itself.
The full event catalog and consumer onboarding guide is in docs/messaging.md.
Documentation
Full documentation: rivoli-ai.github.io/andy-settings
- Architecture -- system design, domain model, scope resolution
- Features -- complete feature catalog
- Security -- auth, RBAC, secret encryption
- Scope authorization -- ownership, trusted claims, administrator/workload configuration and rollout
- Messaging -- NATS event catalog, subscriber onboarding, burst handling
- Stories -- implementation backlog (11 epics, ~45 stories)
- Examples -- multi-language API/MCP examples
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- Andy.Auth.M2MClient (>= 2026.5.29-rc.223)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Andy.Settings.Client:
| Package | Downloads |
|---|---|
|
Andy.Settings.Client.TestSupport
FakeAndySettingsClient + related test doubles for consumers of Andy.Settings.Client. Thread-safe dict-backed in-memory fake; replaces the per-service FakeAndySettingsClient / StubAndySettingsClient forks that andy-tasks / andy-issues / andy-agents ship today. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.9.28-rc.75 | 42 | 9/28/2026 |
| 2026.9.8-rc.71 | 89 | 9/8/2026 |
| 2026.9.7-rc.69 | 73 | 9/7/2026 |
| 2026.9.7-rc.67 | 82 | 9/7/2026 |
| 2026.8.6-rc.65 | 83 | 8/6/2026 |
| 2026.8.6-rc.63 | 78 | 8/6/2026 |
| 2026.7.25-rc.61 | 337 | 7/25/2026 |
| 2026.7.25-rc.59 | 77 | 7/25/2026 |
| 2026.7.25-rc.56 | 80 | 7/25/2026 |
| 2026.7.25-rc.55 | 68 | 7/25/2026 |
| 2026.7.25-rc.54 | 72 | 7/25/2026 |
| 2026.7.25-rc.53 | 68 | 7/25/2026 |
| 2026.7.25-rc.52 | 67 | 7/25/2026 |
| 2026.7.25-rc.51 | 90 | 7/25/2026 |
| 2026.7.25-rc.50 | 76 | 7/25/2026 |
| 2026.7.25-rc.49 | 72 | 7/25/2026 |
| 2026.7.21-rc.47 | 79 | 7/21/2026 |
| 2026.6.11-rc.45 | 87 | 6/11/2026 |
| 2026.5.29-rc.39 | 98 | 5/29/2026 |
| 2026.5.22-rc.36 | 85 | 5/22/2026 |