Skip to main content

Sharing Agent Terminals

This guide walks through common patterns for sharing AI agent terminal access with team members, stakeholders, and external collaborators.

Overview

KubeOpenCode's share link feature generates a unique URL that provides direct terminal access to an Agent — no Kubernetes credentials, no admin UI, no login. The consumer opens the URL in a browser and gets a full-screen terminal.

This is useful when:

  • A platform team manages the cluster but product teams need agent access
  • A developer wants QA to verify agent behavior interactively
  • A manager or stakeholder needs to see a live demo
  • External contractors need temporary terminal access

Scenario 1: Developer → QA Handoff

The developer sets up an agent with the project codebase, enables sharing, and posts the link in the team's Slack channel.

Agent Configuration

apiVersion: kubeopencode.io/v1alpha1
kind: Agent
metadata:
name: qa-review-agent
namespace: qa
spec:
profile: "QA review agent for feature-xyz"
executorImage: ghcr.io/kubeopencode/kubeopencode-agent-devbox:latest
workspaceDir: /workspace
serviceAccountName: kubeopencode-agent
contexts:
- name: codebase
type: Git
git:
repository: https://github.com/your-org/your-repo.git
ref: feature/xyz
mountPath: code
credentials:
- name: api-key
secretRef:
name: ai-credentials
key: api-key
env: OPENCODE_API_KEY
share:
enabled: true
expiresAt: "2026-04-20T00:00:00Z" # Expire after the sprint

Sharing via CLI

kubeoc agent share qa-review-agent -n qa --expires-in 168h
# Output:
# Share link enabled for agent qa/qa-review-agent
# Token: abc123...
# Path: /s/abc123...

Post in Slack: "QA review agent for feature-xyz is ready: https://kubeopencode.example.com/s/abc123..."

After QA is done

kubeoc agent unshare qa-review-agent -n qa

Scenario 2: External Access with IP Restriction

Grant access to external contractors while restricting to their office IP range.

spec:
share:
enabled: true
allowedIPs:
- "203.0.113.0/24" # Contractor office IP range
- "198.51.100.0/24" # VPN exit IPs
expiresAt: "2026-05-01T00:00:00Z"

Access from any IP outside these ranges returns a 403 Forbidden error.

Scenario 3: GitOps-Managed Shared Agent

For teams using GitOps (Argo CD, Flux), the share configuration is declarative and version-controlled:

# team-agent.yaml (in your GitOps repo)
apiVersion: kubeopencode.io/v1alpha1
kind: Agent
metadata:
name: team-agent
namespace: platform
spec:
profile: "Platform team shared agent"
executorImage: ghcr.io/kubeopencode/kubeopencode-agent-devbox:latest
workspaceDir: /workspace
serviceAccountName: kubeopencode-agent
share:
enabled: true
# No expiry — always available
# No IP restriction — internal network only (enforced by Ingress/NetworkPolicy)

The share token is generated automatically and stored in a Secret. Team members retrieve it with:

kubeoc agent share team-agent -n platform --show

Tips

Token Security

  • The URL itself is the credential — treat it like a password
  • Use expiresAt to limit the window of access
  • Use allowedIPs when sharing with external parties
  • Rotate tokens by disabling and re-enabling: kubeoc agent unshare && kubeoc agent share

Networking

  • The share URL must be reachable by the consumer — ensure your Ingress, HTTPRoute, or LoadBalancer exposes the KubeOpenCode server
  • The server port is 2746 by default
  • For local testing: kubectl port-forward -n kubeopencode-system svc/kubeopencode-server 2746:2746

Monitoring

Share link access is logged as Kubernetes Events on the Agent object:

kubectl get events --field-selector involvedObject.name=team-agent -n platform