{"id":51121555,"url":"https://github.com/nicoavanzdev/dtach-rs","last_synced_at":"2026-06-25T03:01:09.612Z","repository":{"id":355790665,"uuid":"1228895353","full_name":"NicoAvanzDev/dtach-rs","owner":"NicoAvanzDev","description":"A small cross-platform Rust clone of dtach","archived":false,"fork":false,"pushed_at":"2026-05-05T09:39:02.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-05T10:20:49.173Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NicoAvanzDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-04T13:43:52.000Z","updated_at":"2026-05-05T09:39:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NicoAvanzDev/dtach-rs","commit_stats":null,"previous_names":["nicoavanzdev/dtach-rs"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/NicoAvanzDev/dtach-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicoAvanzDev%2Fdtach-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicoAvanzDev%2Fdtach-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicoAvanzDev%2Fdtach-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicoAvanzDev%2Fdtach-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NicoAvanzDev","download_url":"https://codeload.github.com/NicoAvanzDev/dtach-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicoAvanzDev%2Fdtach-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34757355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"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":[],"created_at":"2026-06-25T03:01:08.698Z","updated_at":"2026-06-25T03:01:09.597Z","avatar_url":"https://github.com/NicoAvanzDev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dtach-rs\n\nA small Rust clone of [`dtach`](https://github.com/crigler/dtach): it runs one\nprogram under a pseudo-terminal, lets terminals attach and detach from it, and\nkeeps the program alive after the original terminal goes away.\n\n## Installation\n\n### Pre-built binaries\n\nDownload the latest binary for your platform from the\n[GitHub Releases](https://github.com/nicoavanzdev/dtach-rs/releases) page.\n\n### Windows (WinGet)\n\n```powershell\nwinget install nicoavanzdev.dtach-rs\n```\n\n### macOS / Linux (Homebrew)\n\n```sh\nbrew install nicoavanzdev/tap/dtach-rs\n```\n\n### From source (cargo)\n\n```sh\ncargo install --git https://github.com/nicoavanzdev/dtach-rs\n```\n\nThis implementation keeps the upstream `dtach` command-line shape:\n\n```text\ndtach-rs -a \u003csocket\u003e \u003coptions\u003e\ndtach-rs -A \u003csocket\u003e \u003coptions\u003e \u003ccommand...\u003e\ndtach-rs -c \u003csocket\u003e \u003coptions\u003e \u003ccommand...\u003e\ndtach-rs -n \u003csocket\u003e \u003coptions\u003e \u003ccommand...\u003e\ndtach-rs -N \u003csocket\u003e \u003coptions\u003e \u003ccommand...\u003e\ndtach-rs -p \u003csocket\u003e\n```\n\n## Features\n\n- `-a`: attach to an existing session.\n- `-A`: attach, or create the session if it does not exist.\n- `-c`: create a session and attach to it.\n- `-n`: create a detached session and exit.\n- `-N`: create a session and keep the master in the foreground.\n- `-p`: copy standard input to a session without scanning for detach keys.\n- `-l`, `--list`: list active sessions known to the per-user registry.\n- `-e \u003cchar\u003e` and `-E`: customize or disable the detach character.\n- `-r none|ctrl_l|winch`: choose the redraw behavior.\n- `-z`: disable local suspend handling.\n\nThe default detach key is `^\\` (`Ctrl-\\`), matching upstream `dtach`.\n\n## Cross-Platform Model\n\nThe original `dtach` uses Unix-domain sockets as session handles. To work on\nWindows and Unix with the same code path, `dtach-rs` stores a small descriptor\nfile at the requested `\u003csocket\u003e` path. That descriptor points to an\nauthenticated loopback control port owned by the master process.\n\nThe program PTY is provided by `portable-pty`, so Unix uses the platform PTY\nimplementation and Windows uses ConPTY. Windows therefore requires a ConPTY\ncapable system, normally Windows 10 October 2018 or newer.\nInteractive attach/detach behavior should be tested from a real terminal;\nheadless Windows shells do not always exercise ConPTY like an attached console.\n\n`dtach-rs` is not wire-compatible with the original C `dtach`; existing C\n`dtach` clients cannot attach to `dtach-rs` sessions, and vice versa.\n\n## Examples\n\nCreate or attach to a shell:\n\n```sh\ndtach-rs -A /tmp/work-shell bash\n```\n\nCreate a detached session:\n\n```sh\ndtach-rs -n /tmp/work-shell bash\n```\n\nSend commands to a session:\n\n```sh\nprintf 'cd /var/log\\nls -l\\n' | dtach-rs -p /tmp/work-shell\n```\n\nList active sessions:\n\n```sh\ndtach-rs -l\ndtach-rs -l /tmp\n```\n\nOn Windows, use a normal filesystem path for the session descriptor:\n\n```powershell\ndtach-rs -A $env:TEMP\\work-shell powershell\n```\n\n## Development\n\nThis repository uses Rust 2024.\n\n```sh\ncargo build\ncargo test\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicoavanzdev%2Fdtach-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicoavanzdev%2Fdtach-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicoavanzdev%2Fdtach-rs/lists"}