{"id":51135215,"url":"https://github.com/n3tw0rth/completed","last_synced_at":"2026-06-25T17:02:09.090Z","repository":{"id":270349836,"uuid":"909981325","full_name":"n3tw0rth/completed","owner":"n3tw0rth","description":"A CLI tool for sending desktop notifications and multi-channel alerts when a terminal process finishes or when predefined triggers occur","archived":false,"fork":false,"pushed_at":"2026-06-09T15:06:20.000Z","size":51,"stargazers_count":3,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-09T17:10:14.567Z","etag":null,"topics":["cli","messaging","notifications","rust","teams"],"latest_commit_sha":null,"homepage":"http://w0rth.dev/tags/completion-notifier/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/n3tw0rth.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":"2024-12-30T07:50:47.000Z","updated_at":"2026-06-09T15:18:36.000Z","dependencies_parsed_at":"2025-01-27T15:36:45.726Z","dependency_job_id":"80b3165f-fcec-45a7-9e74-b4f6a7babafe","html_url":"https://github.com/n3tw0rth/completed","commit_stats":null,"previous_names":["n3tw0rth/completion-notifier","n3tw0rth/completed"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/n3tw0rth/completed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n3tw0rth%2Fcompleted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n3tw0rth%2Fcompleted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n3tw0rth%2Fcompleted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n3tw0rth%2Fcompleted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/n3tw0rth","download_url":"https://codeload.github.com/n3tw0rth/completed/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n3tw0rth%2Fcompleted/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34784113,"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":["cli","messaging","notifications","rust","teams"],"created_at":"2026-06-25T17:02:08.293Z","updated_at":"2026-06-25T17:02:09.085Z","avatar_url":"https://github.com/n3tw0rth.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Completed\n\nA terminal process notification tool that alerts you when long-running commands finish — via desktop notifications, email, or Google Chat.\n\n## Overview\n\nDevelopers working on multiple tasks in parallel often lose track of long-running processes. `completed` wraps any command and sends a notification when it finishes, regardless of whether it succeeded or failed. It works in both desktop environments and headless environments like CI pipelines and VMs.\n\n## Installation\n\nClone and install from source:\n\n```bash\ngit clone https://github.com/n3tw0rth/completed.git\ncd completed\n./install.sh\n\ncompleted -h\n```\n\nFor convenience, add an alias to your shell config:\n\n```bash\n# ~/.bashrc or ~/.zshrc\nalias notify='completed'\n```\n\n## Usage\n\nWrap any command by passing it directly to `completed`:\n\n```bash\ncompleted ping google.com\n```\n\nA notification is sent once the process exits, indicating success or failure.\n\n### Triggers\n\nUse `-t` / `--triggers` to send additional notifications when specific strings appear in stdout:\n\n```bash\ncompleted -t PING ping google.com\n```\n\nMultiple trigger strings can be passed as comma-separated values. Phrases with spaces should be quoted:\n\n```bash\ncompleted -t approve,'Enter a value' terraform apply\n```\n\n### Profiles\n\nProfiles group notification destinations under a named label. Use `-p` / `--profile` to select one or more profiles:\n\n```bash\ncompleted -p default,work ping google.com\n```\n\nMultiple profiles can be specified as comma-separated values. All destinations defined across the selected profiles will receive notifications.\n\n## Configuration\n\nPlace your configuration in the appropriate config file. Below is a full example:\n\n```toml\n[email.default]\nfrom     = \"acme@dev.com\"\nto       = \"me@dev.com\"\nusername = \"\"\npassword = \"\"\nport     = 465\nhost     = \"\"\n\n[email.work]\nfrom     = \"acme@dev.com\"\nto       = \"pm@dev.com\"\nusername = \"\"\npassword = \"\"\nport     = 465\nhost     = \"\"\n\n[gchat.work]\napi_key = \"\"\nwebhook = \"\"\n\n[profiles.default]\nsendto = [\"desktop\", \"email.default\"]\n\n[profiles.work]\nsendto = [\"desktop\", \"gchat.work\", \"email.work\"]\n```\n\n## Example Workflow\n\n```bash\nalias notify='completed'\nalias terraform='notify -t approve,\"Enter a value\" terraform'\n```\n\nWith this setup, running `terraform apply` will notify you when Terraform requests input or when the apply completes.\n\n## License\n\nSee [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn3tw0rth%2Fcompleted","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fn3tw0rth%2Fcompleted","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn3tw0rth%2Fcompleted/lists"}