{"id":46258576,"url":"https://github.com/lightsofapollo/attn","last_synced_at":"2026-05-24T00:04:05.741Z","repository":{"id":341891734,"uuid":"1170180688","full_name":"lightsofapollo/attn","owner":"lightsofapollo","description":"A native markdown viewer that launches from the terminal. Rust + Svelte 5.","archived":false,"fork":false,"pushed_at":"2026-05-19T03:41:24.000Z","size":30460,"stargazers_count":8,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T03:44:58.612Z","etag":null,"topics":["cli","desktop","developer-tools","live-reload","macos","markdown","markdown-editor","markdown-viewer","native","rust","svelte","terminal"],"latest_commit_sha":null,"homepage":"https://www.attn.sh/","language":"Svelte","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/lightsofapollo.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-03-01T20:19:07.000Z","updated_at":"2026-05-18T23:05:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lightsofapollo/attn","commit_stats":null,"previous_names":["lightsofapollo/attn"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/lightsofapollo/attn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightsofapollo%2Fattn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightsofapollo%2Fattn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightsofapollo%2Fattn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightsofapollo%2Fattn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lightsofapollo","download_url":"https://codeload.github.com/lightsofapollo/attn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightsofapollo%2Fattn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33415020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","desktop","developer-tools","live-reload","macos","markdown","markdown-editor","markdown-viewer","native","rust","svelte","terminal"],"created_at":"2026-03-04T00:56:41.281Z","updated_at":"2026-05-24T00:04:05.720Z","avatar_url":"https://github.com/lightsofapollo.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eattn\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    Read markdown beautifully. Review it together.\u003cbr\u003e\n    Native window. End-to-end encrypted collaboration. No Electron.\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#collaboration\"\u003eCollaboration\u003c/a\u003e ·\n  \u003ca href=\"#install\"\u003eInstall\u003c/a\u003e ·\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/lightsofapollo/attn/issues\"\u003eIssues\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://media.githubusercontent.com/media/lightsofapollo/attn/main/site/static/screenshots/collab-dark.png\"\u003e\n    \u003cimg src=\"https://media.githubusercontent.com/media/lightsofapollo/attn/main/site/static/screenshots/collab-light.png\" alt=\"attn showing a shared markdown review with comments, suggestions, and a collaborator cursor\" width=\"860\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n```bash\nattn .\n```\n\nattn opens your markdown in a native desktop window with a file tree, tabs,\nlive reload, and a real editor. When a document needs feedback, hit Share and\nsend an invite link. Reviewers can comment, suggest edits, and co-edit from the\nsame markdown surface.\n\nNo account. No browser tab. No Electron runtime. The review relay only sees\nencrypted bytes.\n\n## Why attn?\n\nMarkdown usually lives in your repo, but review often moves somewhere else:\nscreenshots, pasted docs, stale exported PDFs, or a SaaS editor with a copy of\nyour source.\n\nattn keeps the source of truth local and makes review a layer over the file you\nalready have. You get a focused reader, a capable editor, and an encrypted\nreview room without changing how your project is organized.\n\n## Features\n\n- **Beautiful markdown rendering** - readable line length, careful typography,\n  syntax-highlighted code, tables, task lists, math, and Mermaid diagrams.\n- **Live reload** - save in Vim, VS Code, Zed, or any editor and the native\n  window updates immediately.\n- **Built-in editor** - toggle a ProseMirror editor with `Cmd+E` when you want\n  to edit in place.\n- **Interactive checkboxes** - click a `- [ ]` task and attn writes the change\n  back to the file.\n- **Project file tree** - browse folders, lazy-load large repos, and jump to\n  files with fuzzy search.\n- **Tabs and project switching** - keep multiple files open and move between\n  remembered workspaces.\n- **Native media preview** - images, video, and audio open alongside markdown.\n- **Light and dark themes** - paper-and-ink light mode plus a low-glare dark\n  mode.\n- **Single-instance CLI** - run `attn` from many terminals; one daemon receives\n  new files as tabs.\n\n## Collaboration\n\nattn's review flow is built for markdown that should stay private and local.\n\n- **Share in one click** - use the Share button, the breadcrumb/share menu, or\n  `Cmd+Shift+S` to create a review room for the active markdown file.\n- **Encrypted invite links** - send an `attn://review/...#key=...` link or the\n  generated `npx attnmd ...` command. The room key is in the invite fragment,\n  not on the relay.\n- **Comments and suggestions** - reviewers anchor feedback to selected text;\n  suggestions appear beside the document with Accept/Reject actions.\n- **Live cursors and co-editing** - connected reviewers show up in the document\n  and sidebar so you can see where people are reading or editing.\n- **Hybrid transport** - attn uses direct peer-to-peer collaboration when it can\n  and falls back to the encrypted relay when it cannot.\n- **Folder share** - share a directory to publish snapshots for every markdown\n  file under it; newly added markdown files are picked up by the watcher.\n\nOwner flow:\n\n```bash\nattn path/to/docs\n# In the app: Share, or Cmd+Shift+S\n```\n\nCLI share flow:\n\n```bash\nattn review share path/to/docs\n```\n\nReviewer flow:\n\n```bash\nattn review join 'attn://review/\u003croom-id\u003e#key=\u003csecret\u003e'\n```\n\nFor headless reviewers or agents:\n\n```bash\nattn review join 'attn://review/\u003croom-id\u003e#key=\u003csecret\u003e' --as-agent reviewer\n```\n\n## Install\n\n### Homebrew\n\n```bash\nbrew install lightsofapollo/attn/attn\n```\n\n### npm\n\n```bash\nnpx attnmd\n# or\nnpm install -g attnmd \u0026\u0026 attn\n```\n\n### From source\n\n```bash\ngit clone https://github.com/lightsofapollo/attn.git\ncd attn\ncargo install --path .\n```\n\nRequires Rust 1.85+. npm installs require Node 18+.\n\n## Usage\n\n```bash\nattn                     # open current directory\nattn README.md           # open a file\nattn ~/projects/myapp    # open a project\nattn --dark              # force dark mode\nattn --status todo.md    # print task progress, e.g. \"3/5 tasks complete\"\nattn --json spec.md      # dump document structure as JSON\n```\n\n### Review CLI\n\n```bash\nattn review share docs/                         # share a file or folder\nattn review join 'attn://review/...'            # open/join through the app\nattn review join 'attn://review/...' --as-agent reviewer\nattn review list-agents\nattn review whoami\n```\n\n### Keyboard shortcuts\n\n| Shortcut | Action |\n|---|---|\n| `Cmd+P` | Fuzzy file search |\n| `Cmd+E` | Toggle editor |\n| `Cmd+F` | Find and replace |\n| `Cmd+Shift+S` | Share for review |\n| `Cmd+;` | Switch project |\n| `Cmd+W` | Close tab |\n| `Cmd+Tab` / `Cmd+Shift+Tab` | Navigate tabs |\n| `Cmd+=` / `Cmd+-` | Zoom in / out |\n| `Cmd+0` | Reset zoom |\n| `Cmd+/` | Show all shortcuts |\n\n## How it works\n\nThe Svelte 5 frontend is compiled by Vite and embedded into the Rust binary at\nbuild time. There is no bundled web server and no extracted asset directory at\nruntime.\n\nOn first launch, attn forks a daemon to the background. The daemon opens a\nnative window via [wry](https://github.com/tauri-apps/wry), watches your files,\nand listens on a Unix socket. Later `attn` calls connect to that socket and\nopen new tabs in the existing window. If the binary changes after a rebuild,\nthe old daemon is replaced automatically.\n\nCollaboration is layered on top of the local file model. The owner shares a\nsnapshot graph and review event log over an end-to-end encrypted room. The\nrelay handles discovery, mailbox fallback, and presence transport, but it does\nnot receive plaintext markdown or comments.\n\n```\nsrc/\n  main.rs       CLI, native window, keyboard shortcuts\n  daemon.rs     Unix socket IPC, single-instance daemon\n  watcher.rs    File system monitoring with debouncing\n  markdown.rs   Structure extraction\n  ipc.rs        Webview \u003c-\u003e Rust messaging\n  files.rs      File tree and media type detection\n  projects.rs   Project registry\n  review/       Encrypted review rooms, anchors, transport, apply flow\n\nweb/src/        Svelte 5 frontend\nrelay/          Cloudflare Worker relay for encrypted review traffic\nsite/           Public marketing site\n```\n\n## Development\n\n```bash\ntask dev                              # Vite HMR + Rust in foreground\ntask dev ATTN_PATH=path/to/file.md    # open a specific file\n```\n\nBuilds:\n\n```bash\nscripts/build.sh            # debug build\nscripts/build.sh release    # release build with devtools/screenshots\nscripts/build.sh prod       # production release build\n```\n\nUseful gates:\n\n```bash\nnpm run check --prefix web\nnpm test --prefix web\ncargo test\nnpm test --prefix relay\nnpm run build --prefix site\n```\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flightsofapollo%2Fattn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flightsofapollo%2Fattn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flightsofapollo%2Fattn/lists"}