feat: Add SSH remote execution for multi-host Claude sessions

- Backend: SSH execution via spawn() with -T flag for JSON streaming
- Backend: PATH setup for non-login shells on remote hosts
- Backend: History loading via SSH (tail -n 2000 for large files)
- Frontend: Host selector UI with colored buttons in Sidebar
- Frontend: Auto-select first project when host changes
- Frontend: Pass host parameter to history and session APIs
- Docker: Install openssh-client, mount SSH keys

Enables running Claude sessions on remote hosts via SSH while
viewing them through the web UI.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-15 22:59:34 +01:00
parent 60095d6e25
commit 9eb0ecfb57
6 changed files with 236 additions and 83 deletions

View File

@@ -101,6 +101,7 @@ function App() {
} = useClaudeSession();
const [selectedProject, setSelectedProject] = useState('/projects/claude-web-ui');
const [selectedHost, setSelectedHost] = useState('local');
const [sidebarOpen, setSidebarOpen] = useState(true);
const [resumeSession, setResumeSession] = useState(true);
@@ -114,7 +115,7 @@ function App() {
}, [setMessages]);
const handleStartSession = () => {
startSession(selectedProject, resumeSession);
startSession(selectedProject, resumeSession, selectedHost);
};
// Handle slash commands
@@ -167,6 +168,8 @@ function App() {
onToggle={() => setSidebarOpen(!sidebarOpen)}
selectedProject={selectedProject}
onSelectProject={setSelectedProject}
selectedHost={selectedHost}
onSelectHost={setSelectedHost}
sessionActive={sessionActive}
onStartSession={handleStartSession}
onStopSession={stopSession}