Skip to main content
Git on Satellite runs the Git integration inside your Kubernetes environment through Resolve Satellite.
This guide covers Git on Satellite for Kubernetes deployments. For AWS ECS Fargate deployments, see Satellite on ECS.
Repositories are cloned and managed in your environment. Code stays in your infrastructure, except for investigation snippets that are sent when needed for analysis.

Overview

Git on Satellite lets Resolve AI:
  • Clone and sync multiple Git repositories
  • Search repository files and directories
  • Read file contents and git history
  • Analyze commits, diffs, and blame data
  • Propose code changes and open PRs when write tooling is enabled

When to Use It

Use Git on Satellite when:
  • Repositories are private to your network
  • You need in-cluster data residency and control
  • You need custom networking and cluster-level security controls
If you want the fastest setup without running infrastructure, use Git on Cloud.

Prerequisites

  • Resolve Satellite deployed in your Kubernetes cluster
  • Repository hosts reachable from Satellite pods
  • Kubernetes secret management available
  • Helm available for Satellite updates

Available Tools

The Git integration provides:
  • Git network operations: git clone, git fetch
  • Local read-only git operations: history, diffs, file inspection
  • File system/text processing tools used during code analysis
  • Write/remediation behavior when enabled

Code Remediation Behavior

Write/remediation tools are controlled by both Satellite version support and connection config. Write/remediation availability is then gated by connection.disableWrites:
  • disableWrites: true => read-only mode
  • disableWrites: false => write/remediation tools allowed
  • If omitted:
    • defaults to false when any auth config is type: "github" or type: "ghe"
    • defaults to true for token-only auth
Resolve AI does not automatically push changes without user action. PR creation is an explicit user-invoked workflow.

Authentication Options

  1. Add a Git integration with GitHub auth config:
resolve-values.yaml
  1. Deploy/update Satellite:
  1. In Resolve UI, open your Git integration and click Install GitHub App. GitHub App Installation - repository selection
  2. Complete GitHub authorization and choose repositories. GitHub App configuration in Resolve AI
  3. Verify health check and repository listing.
For a GitHub-specific walkthrough, see App for GitHub.

Option 2: Bring Your Own GitHub App (GHE)

Use this option when you operate your own custom GitHub App. It works against any GitHub variant, github.com, GitHub Enterprise Cloud, or GitHub Enterprise Server (on-prem), including air-gapped GHE Server reachable only from inside your network. The end-to-end walkthrough, creating the GitHub App, recommended permissions, generating the private key, locating App ID / Installation ID / API base URL, and the Satellite YAML + secret shape, lives on App for GitHub → Bring Your Own GitHub App (open the Satellite tab under Step 7). The minimal Satellite values are:
resolve-values.yaml
Pair with a Kubernetes secret containing gheAuthCredentials.<authConfigName>.privateKey. For a self-signed GHE Server, also add trustedCertificateOverrides.<authConfigName>, see Custom SSL certificates.

Combining GHE with GitHub and token auth

A single Git integration can mix github, ghe, and token auth configs. Use this to cover, for example, github.com repos via the Resolve App plus an on-prem GHE instance plus a GitLab org over a PAT, all in one integration.
resolve-values.yaml
The matching secret holds credentials keyed by auth config name:
git-credentials.yaml
The github auth type does not need a secret entry, its tokens are managed by GitHub App installation metadata refreshed by Resolve.

Option 3: Token Auth

Token auth uses matching keys between connection.authConfigs and credentials in your Kubernetes secret.

Step 1: Create access tokens

Create provider tokens first. See Creating Personal Access Tokens.

Step 2: Create Kubernetes secret

git-credentials.yaml
Apply secret:

Step 3: Configure integration

resolve-values.yaml

Step 4: Deploy

Key matching rule

  • connection.authConfigs.<name> must match the credential key exactly:
    • tokenAuthCredentials.<name> for type: token
    • gheAuthCredentials.<name> for type: ghe
  • If used, trustedCertificateOverrides.<name> must use the same key.

How token auth mapping works

  • authConfigs.<name>.tokenAuthRemoteURLs defines which repositories use that auth config.
  • tokenAuthCredentials.<name> provides the username/token for those repositories.
  • Optional trustedCertificateOverrides.<name> adds a per-auth custom cert for TLS verification.

How GHE auth mapping works

  • authConfigs.<name>.type: "ghe" declares a BYO-GitHub-App auth config.
  • authConfigs.<name>.ghe.{baseUrl, appId, installationId} points the Satellite at the right GitHub instance and app installation. Repositories are discovered automatically from the installation, no tokenAuthRemoteURLs needed.
  • gheAuthCredentials.<name>.privateKey provides the PEM private key for the app.
  • Optional trustedCertificateOverrides.<name> adds a per-auth custom cert for self-signed GHE Server.

Storage Configuration

Satellite clones repositories into gitVolume.

Default (emptyDir)

  • Ephemeral
  • Default size: 10Gi
  • Full re-clone after pod restart
  • Persistent across restarts
  • Better for large repositories and faster restart recovery

Advanced Configuration

Custom SSL certificates

For self-hosted Git with private CA or self-signed certificates, set trustedCertificateOverrides using the auth config key.
git-credentials.yaml

gitSSLNoVerify (use carefully)

Disabling SSL verification weakens transport security. Prefer trustedCertificateOverrides when possible.

disableWrites

Use this for strict read-only mode.

disabledSubcommands

Use this to block specific git <subcommand> operations.
The connection schema supports inline credentials and certificate overrides.
For Satellite deployments, we recommend storing tokenAuthCredentials, gheAuthCredentials, and trustedCertificateOverrides in a Kubernetes secret (secretName) instead of inline resolve-values.yaml.

Repository URL Formats

Use HTTPS URLs only. Supported examples:

Creating Personal Access Tokens

Token auth needs a provider PAT whose scopes match the access you want (read-only, or read plus write for remediation), and for GitLab a project/group role that matches (Reporter to read, Developer to open MRs). See Git overview → Creating access tokens for the exact scopes and roles for each provider. Create the token there, then store it under tokenAuthCredentials in your secret (see Step 2).
  1. Integrations Gateway resolves auth configs and prepares tool commands.
  2. GitHub auth repository lists come from GitHub installation metadata refresh (works for both github and ghe auth, ghe calls the configured baseUrl).
  3. Token auth credentials/certs are resolved from the secret-backed connection data.
  4. GHE auth credentials (private key) are resolved from gheAuthCredentials and used to mint short-lived installation tokens against the configured baseUrl.
  5. Refresh uses cloneOrFetch with configured concurrency limits.
  6. Read commands can execute against specific refs using temporary worktrees.
  7. Command validation enforces path safety and blocked subcommands.
  • Read capabilities: search, file read/list, git history/diff, metadata operations
  • GitHub-specific read capabilities (reading PR data; reading GitHub Actions workflow runs / definitions and PR check status): available with github or ghe auth, or with token auth pointed at GitHub repos when the token grants the equivalent scopes (Actions, Checks, Pull requests, Contents, Metadata)
  • Write/remediation capabilities: available when enabled (see disableWrites)

Troubleshooting

  • Verify token/username values in secret (token auth)
  • Verify gheAuthCredentials.<name>.privateKey is valid PEM (GHE auth)
  • Verify authConfigs keys match secret keys
  • Verify Satellite can reach repository host (and the configured ghe.baseUrl for GHE auth)
  • Verify certificate content is valid PEM for custom cert overrides
  • Authentication failed: token invalid/expired or missing required repo permissions
  • Network timeout/refusal: repository host unreachable from Satellite network
  • Disk pressure: insufficient storage for clone/fetch operations
  • Invalid URL format: URL must be HTTPS and reachable
  • Check whether credentials changed recently
  • Validate repository host connectivity from cluster
  • Ensure there is enough storage headroom for fetch/submodule updates
  • Check if disableWrites is explicitly true
  • If omitted, token-only auth defaults to read-only
  • Check Satellite version support (v1.0.15+ required for remediation tools)

Frequently Asked Questions

Repositories are refreshed during scheduled scrape/health workflows. In practice this is typically every few minutes depending on your org scrape cadence.
By default, write availability depends on auth type and disableWrites:
  • Any github or ghe auth config + disableWrites omitted => writes enabled by default
  • Token-only auth + disableWrites omitted => read-only by default
In both cases, PR creation/remediation still occurs through explicit user-invoked workflows.
Plan for total repository size plus git metadata and growth. A practical baseline is total repo size x 1.5 to 2.0.
Use PVC for production. Use emptyDir only when re-cloning after restarts is acceptable.
No. Use HTTPS repository URLs.
  • github auth: Resolve-managed GitHub App on github.com. Tokens and metadata are managed by Resolve. Works only against github.com.
  • ghe auth: Bring-your-own GitHub App on any GitHub instance (github.com, GitHub Enterprise Cloud, or GitHub Enterprise Server). You provide App ID, installation ID, private key, and the API base URL. Use this when you cannot install the Resolve GitHub App, or you need air-gapped GHE Server access.
  • token auth: Direct username/PAT for any HTTPS Git host (GitLab, Bitbucket, Azure DevOps, GitHub via PAT, self-hosted Git).
All three can be read-only or write-enabled depending on disableWrites and Satellite version. Reading PR data and querying GitHub Actions / PR check status works with github or ghe auth, and with token auth pointed at GitHub repos as long as the token carries the equivalent scopes.
Yes. Multiple auth configs can coexist under authConfigs. For example, you can combine github auth for github.com repos, ghe auth for an on-prem GHE instance, and one or more token auth configs for GitLab/Bitbucket/etc, all in a single Git integration.
  • GitHub / GHE auth: grant additional repos during app installation or update on the GitHub instance. They appear automatically on the next refresh.
  • Token auth: add repository URLs under the correct tokenAuthRemoteURLs auth config and redeploy.
  1. Generate new token(s)
  2. Update the Kubernetes secret
  3. Reapply secret
  4. Restart Satellite pods if required by your secret propagation model
Health checks and refresh operations for that auth config will fail until token credentials are updated.
Yes. Use multiple auth configs, each with different credentials and repository URL sets. This lets you isolate permissions by team, provider, or repository group.
There are no hardcoded per-repo size limits in docs-level config. Practical limits come from Satellite CPU, memory, network throughput, and storage capacity. Adjust resources and storage based on repo count/size and refresh concurrency.
Yes, when disableWrites: false and Satellite version support is available (v1.0.15+).