{"id":18562473,"url":"https://github.com/replit/ruspty","last_synced_at":"2025-08-21T00:31:55.439Z","repository":{"id":220588290,"uuid":"747274124","full_name":"replit/ruspty","owner":"replit","description":"PTY for Node through Rust FFI","archived":false,"fork":false,"pushed_at":"2025-07-24T01:22:07.000Z","size":373,"stargazers_count":25,"open_issues_count":3,"forks_count":3,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-08-08T21:50:29.618Z","etag":null,"topics":["forkpty","pseudoterminal","pty","terminal"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@replit/ruspty","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/replit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-23T16:00:56.000Z","updated_at":"2025-08-02T10:24:16.000Z","dependencies_parsed_at":"2024-05-03T10:41:43.227Z","dependency_job_id":"168572f8-4529-4ad1-8aa7-284fef9d4e6a","html_url":"https://github.com/replit/ruspty","commit_stats":{"total_commits":41,"total_committers":5,"mean_commits":8.2,"dds":0.5365853658536586,"last_synced_commit":"cd2b7a17829472e084f79bf9d5247bef0c533a1b"},"previous_names":["replit/ruspty"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/replit/ruspty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fruspty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fruspty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fruspty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fruspty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/replit","download_url":"https://codeload.github.com/replit/ruspty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fruspty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271409436,"owners_count":24754715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["forkpty","pseudoterminal","pty","terminal"],"created_at":"2024-11-06T22:09:52.302Z","updated_at":"2025-08-21T00:31:55.180Z","avatar_url":"https://github.com/replit.png","language":"Rust","readme":"# `@replit/ruspty` - PTY for JavaScript through Rust FFI\n\nA very thin wrapper around PTYs and processes.\n\n```ts\nconst { Pty } = require('@replit/ruspty');\n\nconst pty = new Pty({\n  command: '/bin/sh',\n  args: [],\n  envs: {},\n  size: { rows: 24, cols: 80 },\n  onExit: (...result) =\u003e {\n    // TODO: Handle process exit.\n  },\n});\n\nconst read = pty.read;\nconst write = pty.write;\n\nread.on('data', (chunk) =\u003e {\n  // TODO: Handle data.\n});\nwrite.write('echo hello\\n');\n```\n\n## Local Development\n\n- `npm install`\n- `npm run build`\n- `npm run test`\n\n## Publishing\n\nFollowing [\"Publish It\" section from `napi-rs` docs](https://napi.rs/docs/introduction/simple-package#publish-it):\n\n1. `git clean -f \u0026\u0026 npm install \u0026\u0026 npm run build`\n2. `npm version [major|minor|patch]`\n3. 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`!\n\n`NPM_TOKEN` is part of the repo secrets, generated [like this](https://httptoolkit.com/blog/automatic-npm-publish-gha/).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplit%2Fruspty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freplit%2Fruspty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplit%2Fruspty/lists"}