https://github.com/replit/ruspty
PTY for Node through Rust FFI
https://github.com/replit/ruspty
forkpty pseudoterminal pty terminal
Last synced: about 2 months ago
JSON representation
PTY for Node through Rust FFI
- Host: GitHub
- URL: https://github.com/replit/ruspty
- Owner: replit
- Created: 2024-01-23T16:00:56.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-24T01:22:07.000Z (3 months ago)
- Last Synced: 2025-08-08T21:50:29.618Z (2 months ago)
- Topics: forkpty, pseudoterminal, pty, terminal
- Language: Rust
- Homepage: https://www.npmjs.com/package/@replit/ruspty
- Size: 364 KB
- Stars: 25
- Watchers: 20
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# `@replit/ruspty` - PTY for JavaScript through Rust FFI
A very thin wrapper around PTYs and processes.
```ts
const { Pty } = require('@replit/ruspty');const pty = new Pty({
command: '/bin/sh',
args: [],
envs: {},
size: { rows: 24, cols: 80 },
onExit: (...result) => {
// TODO: Handle process exit.
},
});const read = pty.read;
const write = pty.write;read.on('data', (chunk) => {
// TODO: Handle data.
});
write.write('echo hello\n');
```## Local Development
- `npm install`
- `npm run build`
- `npm run test`## Publishing
Following ["Publish It" section from `napi-rs` docs](https://napi.rs/docs/introduction/simple-package#publish-it):
1. `git clean -f && npm install && npm run build`
2. `npm version [major|minor|patch]`
3. Send that as a Pull Request to GitHub. Ensure that the commit message consisting **only** of `x.y.z` - this is how the CI decides to publish to `npm`!`NPM_TOKEN` is part of the repo secrets, generated [like this](https://httptoolkit.com/blog/automatic-npm-publish-gha/).