Relicta started as a CLI that governs software change. Today, we’re shipping the enterprise foundation that makes it ready for teams, platforms, and production environments at scale.

This isn’t a single feature announcement — it’s the result of three engineering phases that transform Relicta from a single-developer tool into an enterprise governance platform.


What shipped

Authentication: OIDC/SSO and session management

Enterprise teams don’t create local accounts. They use identity providers.

Relicta now supports OpenID Connect with any compliant IdP — Okta, Azure AD, Google Workspace, Keycloak. The flow is standard: authorization code exchange with PKCE, ID token verification via discovery, and configurable claim-to-role mapping.

dashboard:
  auth:
    mode: oidc
    oidc:
      issuer_url: https://login.microsoftonline.com/tenant-id/v2.0
      client_id: ${AZURE_CLIENT_ID}
      client_secret: ${AZURE_CLIENT_SECRET}
      claim_mappings:
        - claim: groups
          value: relicta-admins
          role: admin

Three roles — Admin, Approver, Viewer — map directly to governance actions. An approver can sign off on releases. A viewer can see the audit trail but not act on it.

For teams that prefer local authentication, JWT-based sessions with refresh tokens and revocation are built in.

Persistence: PostgreSQL for scale

Relicta’s file-based storage works for single-machine use. But when multiple instances need to share state, or when you need queryable release history, files aren’t enough.

PostgreSQL is now a first-class persistence backend:

persistence:
  backend: postgres
  connection_string: ${DATABASE_URL}
  pool_size: 10
  migration_mode: auto

Migrations are embedded in the binary and run automatically on startup. The schema is append-only events with JSONB payloads — the same event-sourcing model as the file backend, but with concurrent access, indexes, and SQL queryability.

The file backend remains the default. PostgreSQL is opt-in. Both implement the same port interface.

The Change Governance Protocol as a wire format

The CGP has always been Relicta’s conceptual foundation. Now it’s a concrete wire format with a public Go SDK.

import "github.com/relicta-tech/relicta/pkg/cgp"

proposal := &cgp.ChangeProposal{
    Actor: cgp.Actor{Kind: "agent", ID: "refactor-bot"},
    Scope: cgp.Scope{Repository: "platform/auth-service"},
    Intent: cgp.Intent{
        Summary:    "Refactor session middleware",
        Confidence: 0.74,
    },
}

data, _ := cgp.Marshal(proposal)
// {"cgpVersion":"0.1","type":"change.proposal","payload":{...}}

Three new MCP tools — cgp_propose, cgp_authorize, cgp_status — let AI agents interact with governance via the protocol. An agent proposes a change. Relicta evaluates risk, applies policy, and returns a decision. The agent cannot bypass the decision.

This is the foundation for Relicta as a neutral governance layer that any tool or agent can integrate with.

Multi-repo governance

Most platforms aren’t one repository. They’re many repositories with dependency relationships.

Relicta now supports repository groups — collections of repos with declared dependencies and coordinated release strategies:

repository_groups:
  - name: platform
    strategy: coordinated
    repositories:
      - name: auth-service
        url: https://github.com/org/auth-service
      - name: api-gateway
        url: https://github.com/org/api-gateway
        dependencies: [auth-service]

relicta group plan analyzes changes across all repos and computes a topological release order. relicta group release executes releases in dependency order — auth-service before api-gateway.

For distributed teams, CGP federation enables separate Relicta instances to coordinate via webhook-based governance messages.

Monorepo workspace detection

On the other end of the spectrum, monorepos need per-package governance.

Relicta auto-detects workspace structures — Go modules (go.work), npm workspaces, pnpm, and Cargo — and analyzes changes per package. Three versioning strategies are supported:

  • Independent: each package has its own version
  • Lockstep: all packages share a version
  • Hybrid: lockstep within groups, independent between them

Cross-package dependency propagation ensures that if package A changes and package B depends on it, B gets at least a patch bump.

Pre-release channels

Not every change goes straight to stable.

Relicta now supports release channels with promotion workflows:

# Release to canary
relicta bump --channel canary    # v1.3.0-canary.1

# Promote to beta
relicta promote --from canary --to beta    # v1.3.0-beta.1

# Promote to stable
relicta promote --from beta --to stable    # v1.3.0

Each promotion step goes through governance. Channel-specific policies control approval requirements — canary might auto-approve, while stable requires a human sign-off.

Audience-aware communication

Changelogs are for developers. Product managers need impact summaries. Executives need risk assessments.

The new relicta communicate command generates audience-specific narratives from the same set of approved changes:

relicta communicate --audiences all --format markdown

Four audience types — engineering, product, executive, external — each with tailored tone, detail level, and emphasis. AI providers generate the narratives; template-based fallback works without any API keys.

Release memory and learning

Relicta now remembers outcomes.

When a release leads to an incident, rollback, or hotfix, that outcome is recorded and linked to the release’s characteristics — files changed, change size, time of deployment, packages involved.

Over time, Relicta detects patterns:

  • “Changes to auth/middleware.go have a 40% rollback rate”
  • “Friday afternoon releases fail 3x more often”
  • “Changes touching both api and database packages together are high-risk”

These patterns feed back into risk scoring. The next time a similar change is proposed, the risk score is adjusted based on historical evidence — not just static analysis.

Runtime observability integration

Risk scoring at release time is useful. But the real signal comes from production.

Relicta now integrates with observability platforms to close the feedback loop:

  • Prometheus for metric queries (error rates, latency)
  • Webhook receiver for Alertmanager, PagerDuty, Datadog alerts
  • Deployment health monitor that watches metrics after each release
  • Correlation engine that links incidents to releases by time, service, and deployment labels

When error rates spike after a release, Relicta automatically records a negative outcome. When the health window passes without issues, it records success. This data feeds the memory system.

Dashboard: from embedded to deployable

The dashboard has grown from a monitoring view to a governance cockpit.

New views:

  • Analytics — risk trends, decision distribution, team velocity
  • Multi-Repo — repository group dependency graphs and release state
  • Observability — deployment health, provider status, incident correlations
  • Release Memory — pattern detection, success rates, historical insights

The backend now supports standalone API mode (relicta server --mode api) with proper CORS, WebSocket authentication, Server-Sent Events fallback, and health/readiness probes. The frontend can be deployed independently to any CDN.

Rollback command

Sometimes the right governance decision is to undo.

relicta rollback --to-version 1.2.3

Creates a revert tag, records the rollback in the audit trail, and feeds the outcome back to release memory.


What this means

Relicta is no longer just a CLI that automates releases.

It’s a governance platform that:

  • Authenticates users and agents via industry-standard protocols
  • Persists decisions in production-grade storage
  • Coordinates releases across repository boundaries
  • Learns from production outcomes
  • Communicates decisions to every stakeholder in their language
  • Exposes an open protocol that any tool can implement

The core thesis remains: as AI agents generate more change, the decision layer — not the execution layer — becomes the critical infrastructure.

We’re building that layer.


Get started

brew install relicta-tech/tap/relicta
relicta init
relicta release

Documentation | GitHub Action | CGP SDK