Files
headquarter/openspec/changes/archive/2026-06-14-completed-specs-archive/ssh-keys/spec.md
T
Developer c8db6ce933 fix: disable native touch panning on mobile terminal and archive specs
- Change mobile terminal CSS to use touch-action: none and
  overscroll-behavior: none so the custom touch handler owns swipes
- Archive completed/partial OpenSpec specs to
  openspec/changes/archive/2026-06-14-completed-specs-archive/
- Regenerate project maps

Quality gates: npm run typecheck, npm run lint (apps/web)
2026-06-14 18:07:01 +00:00

1.7 KiB

SSH Key Management Specification

Purpose

Generate and manage SSH keys for git operations with external providers.

Requirements

Requirement: Key Generation

The system SHALL generate Ed25519 SSH key pairs.

Scenario: Generate key

  • GIVEN an authenticated user
  • WHEN they request a new SSH key
  • THEN an Ed25519 key pair is generated
  • AND the private key is encrypted with Fernet
  • AND the public key is stored in OpenSSH format

Requirement: Key Association

The system SHALL only allow project default-key assignment using keys valid for the authenticated owner's project scope.

Scenario: Valid default key assignment

  • GIVEN a project owner and an eligible SSH key
  • WHEN the owner sets the key as default for the project
  • THEN the project stores that key reference

Scenario: Invalid default key assignment

  • GIVEN a project owner
  • WHEN the owner attempts to set an ineligible SSH key as project default
  • THEN the system responds with validation failure

Requirement: Key Display

The system SHALL display public keys for copying.

Scenario: Copy public key

  • GIVEN an authenticated user
  • WHEN they view their SSH keys
  • THEN each public key is displayed in OpenSSH format
  • AND a copy button is available

Requirement: Key Deletion

The system SHALL support key removal.

Scenario: Delete key

  • GIVEN an authenticated user
  • WHEN they delete an SSH key
  • THEN it's removed from the database
  • AND the key files are deleted

Dependencies

  • Database models: SSHKey, User, Project
  • cryptography library for key generation

Quality Gates

  • pytest must pass
  • mypy . must pass
  • ruff check . must pass
  • npm run typecheck must pass
  • npm run lint must pass