{"id":50229271,"url":"https://github.com/HalFrgrd/evp","last_synced_at":"2026-06-12T09:01:09.054Z","repository":{"id":356752324,"uuid":"1233178344","full_name":"HalFrgrd/evp","owner":"HalFrgrd","description":"A terminal recoder powered by libghostty and rust.","archived":false,"fork":false,"pushed_at":"2026-06-09T07:38:20.000Z","size":21371,"stargazers_count":2,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-09T09:25:11.675Z","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/HalFrgrd.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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-08T17:14:39.000Z","updated_at":"2026-06-09T07:38:26.000Z","dependencies_parsed_at":"2026-05-31T20:03:33.770Z","dependency_job_id":null,"html_url":"https://github.com/HalFrgrd/evp","commit_stats":null,"previous_names":["halfrgrd/evp"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/HalFrgrd/evp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalFrgrd%2Fevp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalFrgrd%2Fevp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalFrgrd%2Fevp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalFrgrd%2Fevp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HalFrgrd","download_url":"https://codeload.github.com/HalFrgrd/evp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalFrgrd%2Fevp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34236552,"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-12T02:00:06.859Z","response_time":109,"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-05-26T18:00:25.034Z","updated_at":"2026-06-12T09:01:09.048Z","avatar_url":"https://github.com/HalFrgrd.png","language":"Rust","funding_links":[],"categories":["System Integrations \u0026 Utilities"],"sub_categories":[],"readme":"# evp\n\n**evp** — a small Rust CLI\nthat ingests [VHS](https://github.com/charmbracelet/vhs)-format scripts\nand produces GIF, SVG, or JSON outputs using\n[libghostty](https://ghostty.org) as the underlying terminal emulator.\n\n`evp` runs a real shell inside an embedded Ghostty VT, schedules typed\ninput from your `.tape` script onto an absolute timeline, snapshots the\nterminal at the configured framerate, then streams frames to one or more\nrenderer threads.\n\n`evp` is very similar to [VHS](https://github.com/charmbracelet/vhs) except:\n- significantly faster. The gif is ready as soon as the recording finishes.\n- all key codes possible\n- specify full shell path with arguments\n- SVG output (as well as gif)\n- no runtime dependencies (everything is statically linked)\n- embedded, character-subsetted fonts (so SVG renders the same everywhere)\n- selectable SVG text\n- TODO: mouse support\n- TODO: resize support\n- TODO: process metrics\n- TODO: show the key inputs on screen overlay\n- render from a json recording\n\n## Output Formats\n\n`evp` infers the output renderer from the file extension of your `Output` directives or `--output` CLI argument. The following formats are supported:\n- **`.gif`**: Animated GIF.\n- **`.svg`**: Animated SVG with embedded, character-subsetted fonts.\n- **`.svgz`**: Compressed SVG. If the output path ends in `.svgz`, `evp` automatically Gzip-compresses the generated SVG.\n- **`.json`**: The raw terminal frame recording in JSON format.\n\n## Acknowledgments\n\n### VHS\n\nevp is based on the vhs project.\nThey share little code but evp does try use the same `.tape` file format.\n\nThe color themes in [`assets/vhs-themes.json`](assets/vhs-themes.json) are taken from the [VHS](https://github.com/charmbracelet/vhs) project and are licensed under the MIT License. See [licenses/VHS-MIT.txt](licenses/VHS-MIT.txt) for the full license text.\n\nCopyright (c) 2022-2023 Charmbracelet, Inc\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHalFrgrd%2Fevp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHalFrgrd%2Fevp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHalFrgrd%2Fevp/lists"}