Ivy-Interactive / Ivy-Interactive/Rusty-Framework

[Subsystem] Implement Server-Side PTY Shell Process Manager (Port of Ivy.Hooks.Pty Backend)

Open
#118 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
3
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Problem Statement

Rusty-Framework includes a frontend terminal.rs widget, but lacks the backend server-side PTY process lifecycle manager (port of Ivy.Hooks.Pty).

Without a server PTY process manager, the frontend terminal widget cannot connect to native OS shell sessions (bash/zsh/cmd/powershell) on the server.

Missing Functionality

  • Server-side PTY process lifecycle manager (spawn, resize, write, signal, terminate).
  • WebSocket binary/text streaming handler connecting PTY stdout/stdin/stderr to terminal.rs.
  • Terminal window size synchronization (cols, rows, pixel dimensions).
  • Process isolation and security execution sandboxing settings.

Proposed Architecture & Design

  1. Integrate portable-pty or tokio-pty into rusty-server.
  2. Add PTY session management handlers to the WebSocket routing module.
  3. Handle terminal resize events (SIGWINCH / TIOCSWINSZ) received over WebSocket messages.
  4. Provide security configuration options (allowed binaries, working directory restrictions, environment variable filtering).

Acceptance Criteria

  • Server spawns native shell processes on Linux, macOS, and Windows.
  • Interactive stdin/stdout data streams between PTY process and terminal.rs widget without latency or framing issues.
  • Terminal resize messages dynamically adjust PTY dimensions.
  • Clean process termination on WebSocket disconnect.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing frontend terminal.rs widget and locating the rusty-server WebSocket routing module. Compare portable-pty and tokio-pty for spawning shells, streaming input and output, resizing, and termination across Linux, macOS, and Windows. Done means the acceptance criteria are met, including security configuration and cleanup on disconnect.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.