INTERNAL TOOL

snnTerminal

스마트폰에서 Claude Code를 사용하는 전용 SSH 터미널.
태블릿이나 폰 하나로 어디서든 코딩.

Features

개발자를 위한 모바일 터미널

⌨️

듀얼 모드

Terminal 모드(Raw PTY)와 Chat 모드(Claude AI)를 탭 하나로 전환. 터미널 작업과 AI 대화를 동시에.

🔐

SSH 키 인증

비밀번호 없이 ed25519 키 인증. 접근코드로 암호화된 키를 사용하여 보안 유지.

🎤

음성 입력 (STT)

키보드 대신 음성으로 Claude에게 명령. Speech-to-Text로 빠른 프롬프트 입력.

📎

이미지 업로드

카메라나 갤러리에서 이미지 선택 → SFTP로 프로젝트에 바로 업로드.

🔄

자동 재접속

네트워크 끊김 시 지수 백오프로 자동 재접속. 프로젝트 컨텍스트까지 자동 복원.

📦

OTA 업데이트

자체 서버에서 앱 업데이트. Play Store 없이 빠르게 새 버전 배포.

Architecture

클린 아키텍처 + Riverpod 상태 관리

앱 흐름

앱 시작 → 접근코드 인증 → 프로젝트 선택
  → SSH 키 인증 (LAN 우선 → 외부 fallback)
  → cd ~/project && claude
  → 터미널 모드 / 채팅 모드 전환

터미널 모드 (Raw PTY)

키보드 입력 → xterm Terminal → SSH PTY → 원격 서버
  → stdout → xterm 렌더링 (실시간)

채팅 모드 (Claude AI)

텍스트/음성 입력 → 별도 SSH 세션
  → claude -p "msg" --output-format stream-json
  → NDJSON 스트림 파싱 → Markdown 렌더링

Tech Stack

Flutter 3.19 Dart dartssh2 xterm.dart Riverpod Freezed GoRouter SecureStorage speech_to_text SFTP Claude API NDJSON Streaming
🔒 snnTerminal은 사내 전용 도구입니다.
접근코드 인증 + SSH 키 암호화로 인가된 사용자만 사용할 수 있습니다.