{"id":50429071,"url":"https://github.com/oxidecomputer/attend","last_synced_at":"2026-05-31T12:31:01.663Z","repository":{"id":345579532,"uuid":"1161550023","full_name":"oxidecomputer/attend","owner":"oxidecomputer","description":"Give your coding agent eyes and ears in your editor","archived":false,"fork":false,"pushed_at":"2026-03-19T18:13:59.000Z","size":2282,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-20T09:47:46.113Z","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/oxidecomputer.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-02-19T08:36:21.000Z","updated_at":"2026-03-19T18:14:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/oxidecomputer/attend","commit_stats":null,"previous_names":["oxidecomputer/attend"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/oxidecomputer/attend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fattend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fattend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fattend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fattend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxidecomputer","download_url":"https://codeload.github.com/oxidecomputer/attend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxidecomputer%2Fattend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33731998,"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-05-31T02:00:06.040Z","response_time":95,"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-31T12:31:01.580Z","updated_at":"2026-05-31T12:31:01.654Z","avatar_url":"https://github.com/oxidecomputer.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `attend` is all you need\n\nSpeak your thoughts while navigating code, and `attend` uses a local\ntranscription model to send your words to your coding agent, interleaved with\nwhat you were manipulating on-screen as you spoke.\n\nI've found that pair programming using `attend`'s voice narration is a rather\ndifferent experience from typing my thoughts to a coding agent. There's\nsomething very specific about *saying what I mean out loud* that forces me to\nslow down and consider more deeply.\n\nI invite you to see if you feel the same way.\n\n## What it looks like\n\nPress a hotkey, say out loud, *\"this function should take a Duration instead of\na raw u64\"* while your cursor is on the relevant code, and press the hotkey\nagain.\n\nYour coding agent receives your words interleaved with edits and selections in\nyour text editor ([Zed](https://zed.dev)), selections from within your browser\n([Firefox](https://www.mozilla.org/firefox/) or\n[Chrome](https://www.google.com/chrome/)), clipboard contents (text and images),\nand shell commands ([Fish](https://fishshell.com/) or\n[Zsh](https://www.zsh.org/)), and even selections from arbitrary other apps\n(macOS only) — all in chronological order, so it can understand your words and\nactions in context with one another while you're narrating.\n\nSee [example narration](docs/tutorial/example-narration.md) for what the agent receives.\n\n## Installation\n\nYou'll need [Rust](https://rust-lang.org/learn/get-started) to install `attend`:\n\n```bash\ncargo install --locked --git https://github.com/oxidecomputer/attend attend\n```\n\n### Claude Code plugin (recommended)\n\nThe easiest way to integrate with Claude Code is to install the `attend`\nplugin:\n\n```\n/plugin marketplace add oxidecomputer/attend\n/plugin install attend@attend\n```\n\nThen write the required permissions (plugins cannot set these):\n\n```bash\nattend install --agent claude\n```\n\nWhen the plugin is detected, this writes only the permission grants that the\nplugin needs. Without the plugin, it performs a full manual installation of\nhooks and skills.\n\n### Other integrations\n\nInstall editor, browser, and shell integrations:\n\n```bash\nattend install\n```\n\nThis detects which integrations are available on your system (editors,\nbrowsers, shells) and prompts you to confirm each one. It also provides the\noption of pre-downloading a local transcription model, so that it's ready on\nfirst-run (it will be downloaded anyhow when you first narrate).\n\nThen follow [your first narration session](docs/tutorial/getting-started.md) to\nstart narrating with your coding agent.\n\n## Documentation\n\n**Start here:**\n- [**Your first narration session**](docs/tutorial/getting-started.md) — a\n  step-by-step tutorial for your first narration\n- [**Example narration**](docs/tutorial/example-narration.md) — see what the\n  agent actually receives\n\n**How-to guides:**\n- [**Narrating effectively**](docs/how-to/narrating-effectively.md) — get the\n  most out of voice-driven pair programming\n- [**Hotkeys**](docs/how-to/hotkeys.md) — configure narration hotkeys in Zed,\n  globally, and in iTerm2\n- [**Browser integration**](docs/how-to/browser-integration.md) — capture text\n  selections from Firefox and Chrome\n- [**Shell integration**](docs/how-to/shell-integration.md) — capture shell\n  commands from Fish and Zsh\n- [**Troubleshooting**](docs/how-to/troubleshooting.md) — diagnose common\n  problems and macOS permissions\n- [**Uninstall**](docs/how-to/uninstall.md) — remove attend and its\n  integrations\n\n**Reference:**\n- [**Command reference**](docs/reference/commands.md) — every `attend`\n  subcommand\n- [**Configuration**](docs/reference/configuration.md) — config files, fields,\n  and transcription engines\n- [**Narration format**](docs/reference/narration-format.md) — event types and\n  rendering format\n- [**Extending reference**](docs/extending/reference.md) — trait APIs, hook\n  events, and message templates\n\n**Understanding attend:**\n- [**How it works**](docs/explanation/how-it-works.md) — data flow, the\n  recording daemon, sessions, and the merge pipeline\n- [**Architecture**](docs/explanation/architecture.md) — design patterns, test\n  architecture, and rationale\n\n**Extending and contributing:**\n- [**Extending attend**](docs/extending/) — adding support for new editors,\n  agents, shells, and browsers\n- [**Development**](docs/extending/development.md) — building, testing, and dev\n  installation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxidecomputer%2Fattend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxidecomputer%2Fattend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxidecomputer%2Fattend/lists"}