How jasonlat-dot/ai-ssh-terminal-server works
AI SSH Terminal Server is a backend for a desktop SSH client. The client manages saved connections, opens terminals, and performs SFTP file operations; it can also submit chat requests to an operations agent and receive responses and events. The agent enriches prompts with intent and session context, then can use SSH and other tools; chat history and attachments are persisted separately. The README documents these capabilities, while the sampled excerpts clarify selected domain-layer interactions. Controller routing and several infrastructure implementations are not present in the supplied tree, so their wiring is left unspecified.
Main entry points: AIAgentReActServiceCase.java ReAct workflow · IChatHistoryRepository.java Chat history · ChatService.java Chat sessions · LongTermMemoryService.java Long-term memory
Components 23
Client API
- Agent API
ai-ssh-terminal-server-api/src/main/java/com/jasonlat/ai/trigger/api/IAgentService.java - SSH API
ai-ssh-terminal-server-api/src/main/java/com/jasonlat/ai/trigger/api/ISshConnectionService.java - Terminal API
ai-ssh-terminal-server-api/src/main/java/com/jasonlat/ai/trigger/api/ISshTerminalService.java
SSH Operations
- Connections
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/ssh/service/connection/SshConnectionService.java - Terminal sessions
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/ssh/service/terminal/SshTerminalService.java - SFTP operations
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/sftp/service/SftpService.java
Agent Runtime
- Chat sessions
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/service/chat/ChatService.java - ReAct workflow
ai-ssh-terminal-server-case/src/main/java/com/jasonlat/ai/cases/react/AIAgentReActServiceCase.java - Intent routing
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/service/intent/IntentService.java - Prompt assembly
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/service/prompt/PromptService.java - Context assembly
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/service/context/ChatContextService.java - Agent tools
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/service/amory/matter/tool/assembly/AgentToolAssemblerService.java
Attachments
- File service case
ai-ssh-terminal-server-case/src/main/java/com/jasonlat/ai/cases/file/FileServiceCase.java - Attachment service
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/file/service/file/FileService.java - MinIO storage
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/file/service/storage/MinioIObjectStorageService.java
Conversation State
- Long-term memory
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/service/memory/LongTermMemoryService.java - Chat history
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/adapter/repository/IChatHistoryRepository.java - Memory repository
ai-ssh-terminal-server-domain/src/main/java/com/jasonlat/ai/domain/agent/adapter/repository/ILongTermMemoryRepository.java
Other components
- Desktop client
- SSH host
- AI model service
- MinIO
- MySQL
Connections 21
- Desktop client → Agent API: submits chat
- Desktop client → SSH API: manages connections
- Desktop client → Terminal API: controls terminal
- Connections → SSH host: tests connection
- Terminal sessions → SSH host: opens session
- SFTP operations → SSH host: transfers files
- Desktop client → SFTP operations: manages files
- Chat sessions → ReAct workflow: runs agent
- ReAct workflow → Intent routing: classifies intent
- ReAct workflow → Prompt assembly: builds prompt
- Prompt assembly → Context assembly: assembles context
- ReAct workflow → Agent tools: uses tools
- ReAct workflow → AI model service: requests completion
- File service case → Attachment service: handles upload
- Attachment service → MinIO storage: stores object
- MinIO storage → MinIO: reads and writes
- Chat sessions → Chat history: reads and writes
- Long-term memory → Chat history: reads messages
- Long-term memory → Memory repository: reads and writes
- Chat history → MySQL: persists history
- Memory repository → MySQL: persists memory