termspace

터미널이 들어 있는 팀 워크스페이스.

termspace는 팀을 위한 채팅·태스크·위키입니다. 직접 설치하도록 만들었고, 소스 코드는 곧 공개됩니다. 데스크톱 앱에는 모든 명령을 블록으로 다루는 터미널이 들어 있고, 블록은 시크릿을 가린 채 팀에 공유됩니다.

  • 소스 코드: 곧 공개
  • 호스팅 클라우드: 준비 중
두 창으로 나눈 termspace 데스크톱 터미널. 왼쪽 창에서는 git pull과 make test를 실행했고, 오른쪽 창에서는 환경 점검과 kubectl 롤아웃을 실행했다. 실패한 롤아웃 블록이 선택되어 강조되어 있다.
데스크톱 터미널에서 실패한 롤아웃을 선택한 모습. 화면은 현재 빌드 그대로입니다.
셸은 내 PC에서만
서버는 셸을 열지 않습니다.
바이너리 하나와 Postgres
Docker Compose나 systemd로 돌아갑니다.
시크릿은 두 번 가립니다
공유 창에서 한 번, 서버에서 한 번 더.
웹·데스크톱·TUI
모든 클라이언트가 같은 HTTP·WebSocket API를 씁니다.

모든 명령은 블록입니다.

셸 통합이 프롬프트·명령·출력의 시작과 끝을 표시하므로, 터미널은 스크롤 덩어리가 아니라 명령 단위로 기억합니다.

스크롤 대신 명령 단위로 일하기

  • Cmd/Ctrl ↑ ↓로 블록을 옮겨 다닙니다. 실패한 명령은 따로 표시됩니다.
  • 명령·출력·둘 다를 복사하고, 긴 출력은 한 줄 요약으로 접습니다.
  • 정규식으로 블록 출력을 거르거나 블록 하나 안에서만 찾습니다.
  • Ctrl R로 종료 코드·디렉터리·소요 시간과 함께 명령 기록을 엽니다.
  • bash·zsh·fish 셸 통합.
명령 일곱 개가 디렉터리·종료 코드·소요 시간과 함께 나열된 명령 기록 팔레트. 실패한 kubectl 롤아웃은 빨간색으로 보인다.

여기서 실행하고, 거기에 공유하세요.

블록을 채널·태스크·위키 페이지로 보냅니다. 팀은 잘린 스크린샷 대신 정확한 명령·종료 코드·출력을 봅니다.

채팅·태스크·위키를 한곳에서.

팀이 매일 쓰는 도구가 하나의 블록 문서 모델을 공유합니다. 명령 블록은 메시지에서도, 태스크 카드에서도, 위키 페이지에서도 똑같이 보입니다.

deploys 채널에 실패한 kubectl 롤아웃 블록이 공유되어 있고, 그 아래 태스크 키를 링크하는 답글이 이어진다.

실시간 채팅

채널·DM·스레드, 리액션·멘션·안 읽음 표시·접속 상태를 WebSocket 하나로 받습니다. 검색, 파일 업로드, 웹 푸시, 설치형 PWA까지.

'스테이징 롤아웃이 readiness 프로브에서 멈춤' 태스크 카드. 설명에 체크리스트와 공유된 터미널 블록이 있다.

키와 이력이 있는 태스크

프로젝트마다 API-1 같은 키가 붙고, 채팅에 키를 쓰면 링크가 됩니다. 종류·우선순위·라벨·상위 태스크·링크·워처와 전체 변경 이력.

스테이징 롤아웃 런북 위키 페이지. 경고 콜아웃, 번호 목록, 셸 코드 블록, 담당 표가 있다.

버전이 있는 위키

옮길 수 있는 페이지 트리, diff가 있는 버전 기록, 휴지통, 백링크, 페이지 링크. 사용자나 그룹별로 보기·편집을 제한합니다.

팀이 매번 다시 치는 명령을 저장하세요.

워크플로는 이름 붙은 인자가 있는 명령 템플릿입니다. 한 번 저장하면 워크스페이스의 모두가 씁니다.

Cmd/Ctrl+K로 고르고 채우기

{{namespace}} 같은 인자는 기본값과 선택지가 있는 폼이 됩니다. 완성된 명령은 입력줄에 들어가고, Enter를 눌러야 실행됩니다. TUI 클라이언트도 같은 목록을 보여 주고 결과를 클립보드에 복사합니다.

rollout-status 워크플로 폼. namespace는 staging, service는 api로 채워져 있고 완성된 kubectl 명령이 보인다.

터미널이 들어 있는 데스크톱 앱.

termspace 앱은 등록한 termspace 서버마다 창을 따로 열고, 팀 채팅 옆에서 내 PC의 진짜 셸을 실행합니다.

세 칸으로 나눈 두 번째 터미널 탭. 왼쪽은 git log와 go vet, 오른쪽 위는 docker compose ps, 오른쪽 아래는 make test.

매일 쓰는 터미널을 위해

  • 탭과 분할 창. 레이아웃을 기억합니다.
  • IBM Plex Mono를 쓰는 xterm.js 렌더링과 한글 IME 입력.
  • 멘션은 OS 알림과 배지로.
  • 여러 서버를 나란히, 저장소는 서버마다 따로.
  • Linux에서 검증했습니다. macOS·Windows 빌드는 실험 단계입니다.

단축키

Cmd/Ctrl T
새 탭
Cmd/Ctrl D
좌우 분할
Cmd/Ctrl Shift D
상하 분할
Cmd/Ctrl ↑ ↓
블록 선택
Cmd/Ctrl K
워크플로
Ctrl R
명령 기록

다른 회사와 채널을 연결하세요.

계열사나 파트너 회사와 채널 하나만 공유합니다. 두 회사가 모두 수락해야 채널이 열립니다.

공유하도록 설계된 것

  • 그 채널의 메시지
  • 채널에 연결된 프로젝트 목록
  • 그 프로젝트의 태스크 제목과 상태만

회사 안에 남도록 설계된 것

  • 담당자와 기한
  • 위키 페이지와 다른 채널
  • 수주·거래처 같은 ERP 데이터
  • 공유된 터미널 블록의 호스트와 디렉터리

직접 설치하도록 만들었습니다. 오픈소스는 곧.

termspace는 Go 바이너리 하나와 PostgreSQL로 돌아갑니다. Docker Compose나 systemd로 띄우고, DB 마이그레이션은 기동할 때 적용됩니다. 저장소와 설치 가이드는 곧 공개되며, 아래는 공개된 뒤 실행할 절차입니다.

Docker Compose로 설치

  1. 저장소를 클론하고 deploy/compose/.env.example을 .env로 복사합니다.
  2. POSTGRES_PASSWORD를 정합니다. 예: openssl rand -hex 24
  3. docker compose up -d --build --wait를 실행합니다. 앱은 127.0.0.1:8080에서 열립니다.
  4. 선택 프로필: --profile tls는 자동 HTTPS용 Caddy를 더하며, 이 호스트를 가리키는 TERMSPACE_DOMAIN, 열린 80·443 포트, TERMSPACE_PUBLIC_URL, TERMSPACE_TRUST_PROXY=1이 필요합니다. --profile s3는 MinIO를 더하며 MINIO_ROOT_PASSWORD와 TERMSPACE_S3_* 설정이 필요합니다.

백업·systemd 유닛·업그레이드와 모든 TERMSPACE_* 설정은 저장소의 설치 가이드에 있습니다. 이미지는 amd64·arm64로 빌드됩니다.

빠른 시작 (저장소 공개 후)

git clone https://github.com/choibongseok/termspace
cd termspace/deploy/compose
cp .env.example .env && chmod 600 .env
# 먼저 .env에 POSTGRES_PASSWORD를 채운다
docker compose up -d --build --wait
curl -s localhost:8080/readyz   # {"status":"ok"}

구성

# deploy/compose/docker-compose.yml (excerpt)
services:
  db:
    image: postgres:16-alpine@sha256:aa6c…5139
    environment:
      POSTGRES_USER: termspace
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?…}
      POSTGRES_DB: termspace
    volumes:
      - pgdata:/var/lib/postgresql/data
    # … healthcheck, logging

  termspaced:
    image: ${TERMSPACE_IMAGE:-termspace:local}
    build:
      context: ../..
    depends_on:
      db:
        condition: service_healthy
    # … env_file: .env (every TERMSPACE_* setting)
    environment:
      TERMSPACE_ADDR: ":8080"
      TERMSPACE_DATA_DIR: /data
      TERMSPACE_DATABASE_URL: postgres://termspace:…@db:5432/…
    ports:
      - "${TERMSPACE_HTTP_BIND:-127.0.0.1:8080}:8080"
    # … healthcheck on /readyz, logging

  # … caddy (profile tls), minio (profile s3)

셸은 내 PC에만 있습니다.

termspace는 한 가지 원칙으로 만들었습니다. 서버는 내가 공유하기로 한 것만 저장하고, 셸은 절대 갖지 않습니다.

서버에는 셸이 없습니다

서버에는 터미널 경로가 없습니다. 셸은 데스크톱 앱이 내 PC에서 엽니다.

서버마다 한 번 허락

어떤 서버의 페이지가 로컬 터미널을 열기 전에, 데스크톱 앱이 그 서버를 허락할지 묻습니다.

브라우저에서는 읽기만

브라우저 사용자는 공유된 블록을 읽기만 하고 실행할 수 없습니다. 입력줄에 다시 넣기는 데스크톱 기능이며 실행하지 않습니다.

시크릿은 두 번 가립니다

공유 창에서 한 번, 메시지·태스크 설명·위키 페이지를 저장할 때 서버에서 한 번 더 가립니다.

명령 기록은 내 기기에

Ctrl+R 명령 기록은 내 기기에만 있고 서버로 보내지 않습니다.

회사별로 나뉜 구조

termspace는 한 서버에 여러 회사가 있는 것을 전제로, 회사마다 별도 테넌트로 설계했습니다.

에디션

termspace는 오픈코어 모델을 따를 예정입니다. 오픈소스 에디션은 팀 규모와 상관없이 완전한 제품을 목표로 하고, 유료 에디션은 관리·컴플라이언스·규모 기능을 더할 예정입니다.

표를 옆으로 밀면 모든 에디션을 볼 수 있습니다.

에디션별 기능. '예정' 표시가 있는 행은 아직 만들어지지 않았습니다.
기능오픈소스직접 설치, 사용자 무제한Basic성장하는 팀Pro관리와 보안Enterprise컴플라이언스와 규모
가격무료가격 공개 예정가격 공개 예정문의
워크스페이스
채팅·스레드·리액션·검색포함포함포함포함
태스크와 프로젝트포함포함포함포함
버전과 페이지 권한이 있는 위키포함포함포함포함
다른 회사와 connect 채널포함포함포함포함
웹·PWA·데스크톱·TUI 클라이언트포함포함포함포함
개인 데이터 내보내기포함포함포함포함
터미널
탭·분할·블록이 있는 로컬 터미널포함포함포함포함
시크릿을 가린 블록 공유포함포함포함포함
워크스페이스 워크플로포함포함포함포함
관리
회사 전체 워크플로 라이브러리 예정미포함포함포함포함
SAML·OIDC 싱글 사인온 예정미포함미포함포함포함
감사 로그 내보내기와 보존 정책 예정미포함미포함포함포함
터미널 관리 정책과 커스텀 마스킹 규칙 예정미포함미포함포함포함
SCIM 프로비저닝 예정미포함미포함미포함포함
컴플라이언스 내보내기와 법적 보존 예정미포함미포함미포함포함
계열사 통합 관리 예정미포함미포함미포함포함

에디션 경계는 제안이며 출시 전에 바뀔 수 있고, 가격은 아직 정하지 않았습니다. 지금은 아무것도 막혀 있지 않습니다. 현재 있는 기능은 모두 라이선스 키 없이 동작합니다.

hello@termspace.io로 메일 보내기Enterprise, 파일럿, 로드맵 문의.

자주 묻는 질문

termspace는 오픈소스인가요?

공개될 예정입니다. 소스 코드는 github.com/choibongseok/termspace에서 공개됩니다. 코어 라이선스는 아직 정하는 중이며 저장소를 공개할 때 알립니다.

서버가 내 명령을 실행하나요?

아니요. 셸은 내 PC의 데스크톱 앱 안에서만 돕니다. 터미널에서 서버로 가는 것은 내가 공유하기로 한 블록과 워크플로뿐입니다.

블록을 공유하면 정확히 무엇이 보내지나요?

명령, 종료 코드, 소요 시간, 셸, 홈을 ~로 바꾼 작업 디렉터리, 그리고 남겨 두었다면 출력입니다. 출력은 20,000바이트로 자릅니다. 시크릿은 공유 창과 서버에서 두 번 가립니다. 호스트명은 직접 켤 때만 들어갑니다.

브라우저만으로 쓸 수 있나요?

네. 채팅·태스크·위키·워크플로 관리는 브라우저와 설치형 PWA에서 됩니다. 공유된 터미널 블록은 읽기 전용이고, 터미널 자체는 데스크톱 앱이 필요합니다.

데스크톱 앱은 어떤 OS를 지원하나요?

Linux에서 검증했습니다. macOS·Windows 빌드는 실험 단계이고, Windows에서는 아직 명령 블록 없이 터미널만 씁니다. 설치 파일은 아직 배포하지 않습니다.

호스팅 버전이 있나요?

아직 없습니다. 호스팅 클라우드를 준비하고 있으며, 직접 설치(Docker Compose·systemd)가 먼저입니다.

가격은 얼마인가요?

오픈소스 에디션은 사용자 수 제한 없이 무료로 제공될 예정입니다. Basic·Pro·Enterprise 가격은 아직 정하지 않았습니다.

설치하려면 무엇이 필요한가요?

Docker가 있는 Linux 서버, 또는 바이너리와 PostgreSQL 16이면 됩니다. 첨부 파일은 디스크나 MinIO·Cloudflare R2·Amazon S3 같은 S3 호환 스토리지에 저장합니다. HTTPS는 앞에 Caddy나 다른 프록시를 둡니다.