CC Safety Net
A coding agent CLI safety layer that blocks destructive git and filesystem commands and secret file access before execution.
Your passwords and API keys, end-to-end encrypted. Autofill your logins and control what your AI agents can access. Your keys, your rules.
SecurityC# · JavaScriptGitHub @Palladin-ioOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Palladin zero-knowledge password manager backend — a security-first .NET modular monolith for identity, vault, agents, audit, and notifications.
Taken from the repository README
Loading the full README.
Read the full README ↗Palladin is a zero-knowledge password manager for AI agents. This repository contains the .NET 10 backend: a modular monolith that coordinates identities, encrypted vault data, agents, grants, notifications, search, and audit records without receiving plaintext credentials or client-held encryption keys.
The backend is pre-production. Its current migration baseline intentionally assumes empty databases and may be incompatible with earlier development data.
Project overview and public repositories · Mobile client · Website
Each component owns its setup and contribution guide. This repository can be used independently of the private project workspace.
Security is an architectural constraint, not an optional feature:
AllowAnonymous().DomainWriteContext, invoke domain behavior, and commit through the domain context so invariants and events cannot be bypassed.The canonical vault wire contract and cryptographic boundaries are documented in Vault protocol 2. Start an architecture review at docs/architecture/README.md.
Every running build exposes its corresponding source revision and license through the anonymous GET /api/health response. Official container images also carry OCI source, revision, and license labels.
Do not report suspected vulnerabilities in a public issue. Use GitHub private vulnerability reporting from the repository's Security tab, or contact the maintainers privately through the Palladin organization.
The application is one deployable API with isolated bounded contexts:
| Area | Responsibility |
|---|---|
src/Palladin.Api | Process entry point, HTTP pipeline, health checks, and module composition |
src/core | Shared security, persistence, messaging, API, analytics, and infrastructure building blocks |
| Identity | Accounts, authentication, organizations, membership, recovery, and key-directory metadata |
| Vault | Encrypted vaults and entries, grants, delivery envelopes, synchronization, and key rotation |
| Agents | Agent enrollment, API keys, proof-of-possession authentication, and lifecycle |
| Audit | Append-only audit records and asynchronous export |
| Notification | Inbox, SignalR, email, and push orchestration |
| Search | Event-fed, access-scoped read models |
| PublicAssetCatalog | Safely acquired and published public icons and presentation assets |
Modules communicate asynchronously through MassTransit contracts. Read and write persistence are split per module, and cross-module read concerns use event-fed OpenHost modules instead of live database queries.
Key technologies include FastEndpoints, Entity Framework Core with PostgreSQL, MassTransit with RabbitMQ, Hangfire, SignalR, NodaTime, Serilog, xUnit, Shouldly, NSubstitute, and Testcontainers.
Prerequisites:
Start PostgreSQL, RabbitMQ, and the local S3-compatible storage used by presentation assets:
docker compose up -d --wait
The compose stack binds every service to loopback only and initializes isolated development and test databases. The committed development configuration points storage-dependent features at the LocalStack S3 endpoint on http://localhost:4566; the API creates the required public-asset bucket when it starts.
Restore, build, and run the API:
dotnet restore Palladin.sln
dotnet build Palladin.sln --no-restore
dotnet run --project src/Palladin.Api/Palladin.Api.csproj
The development API listens on http://localhost:5000. Check GET /api/health; Scalar API documentation is available at /scalar only in Development.
For local overrides, copy the tracked placeholder template to the ignored local settings file and fill in your own Google Web client ID:
cp src/Palladin.Api/appsettings.Local.example.json \
src/Palladin.Api/appsettings.Local.json
Alternatively, use ASP.NET's double-underscore environment syntax. Environment variables take precedence over the local settings file:
Modules__Identity__Google__ClientId=your-local-client-id \
dotnet run --project src/Palladin.Api/Palladin.Api.csproj
The Google client ID is public client configuration rather than a secret, but Palladin's value stays outside tracked defaults so a public clone or fork cannot silently use Palladin's OAuth project. Never commit appsettings.Local.json, .env files, service-account JSON, signing keys, tokens, or production connection strings.
Run the same pipeline as CI:
dotnet restore Palladin.sln
dotnet build Palladin.sln --no-restore
dotnet test Palladin.sln --no-build --verbosity normal
The unit project can be run independently:
dotnet test tests/Palladin.Tests.Unit/Palladin.Tests.Unit.csproj
Integration tests require the local PostgreSQL test databases. A fresh docker compose up -d postgres initializes them; external delivery and storage boundaries are replaced with test doubles where the suite requires isolation.
The Shared Unlock fixture scanner checks
document the public-vector provenance and test the narrowly scoped Gitleaks
exceptions. Run bash scripts/test-gitleaks-fixtures.sh when changing those
fixtures or the scanner configuration.
Read AGENTS.md before changing code and the relevant module document before implementing a feature. Keep changes within a vertical slice, preserve zero-knowledge boundaries, add behavior-focused tests, and run the full build and test pipeline before opening a pull request.
All changes are reviewed through pull requests to main. Security boundary changes, integration-contract changes, and schema changes should be called out explicitly in the pull request description.
Copyright 2026 Patryk Roguszewski, trading as Patryk Roguszewski IT Solutions.
The backend is licensed under the GNU Affero General Public License v3.0 only, identified as AGPL-3.0-only. See NOTICE, TRADEMARKS.md, THIRD_PARTY_NOTICES.md, and the CycloneDX SBOM for additional information.