{"id":30451907,"url":"https://github.com/varppi/litecanary","last_synced_at":"2025-08-23T14:19:04.557Z","repository":{"id":274466374,"uuid":"922442818","full_name":"varppi/LiteCanary","owner":"varppi","description":"Self hostable canary alerts","archived":false,"fork":false,"pushed_at":"2025-08-09T07:27:46.000Z","size":48,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-09T08:51:21.862Z","etag":null,"topics":["canary","cybersecurity","detection-engineering"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varppi.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}},"created_at":"2025-01-26T08:08:08.000Z","updated_at":"2025-08-09T07:27:49.000Z","dependencies_parsed_at":"2025-03-08T16:27:08.129Z","dependency_job_id":"a7a78fce-41a4-4f26-9d0f-6507ce8b644c","html_url":"https://github.com/varppi/LiteCanary","commit_stats":null,"previous_names":["r00tendo/litecanary","spoofimei/litecanary","varppi/litecanary"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/varppi/LiteCanary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varppi%2FLiteCanary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varppi%2FLiteCanary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varppi%2FLiteCanary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varppi%2FLiteCanary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varppi","download_url":"https://codeload.github.com/varppi/LiteCanary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varppi%2FLiteCanary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271751989,"owners_count":24814717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"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":["canary","cybersecurity","detection-engineering"],"created_at":"2025-08-23T14:19:04.000Z","updated_at":"2025-08-23T14:19:04.552Z","avatar_url":"https://github.com/varppi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=700 src=\"https://github.com/user-attachments/assets/b1d995db-9fdc-4782-bbdd-5f2b07a05f49\"\u003e\u003c/img\u003e\u003cbr\u003e\n[![Go/Golang](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge\u0026logo=go\u0026logoColor=white)](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge\u0026logo=go\u0026logoColor=white)\n[![SQLite](https://img.shields.io/badge/sqlite-%2307405e.svg?style=for-the-badge\u0026logo=sqlite\u0026logoColor=white)](https://img.shields.io/badge/sqlite-%2307405e.svg?style=for-the-badge\u0026logo=sqlite\u0026logoColor=white)\n\n\u003cb\u003eLight weight self-hostable canary alerts to catch snoopers red-handed.\u003c/b\u003e\n\n## What is a canary?\nA canary, in the context of this project, is a URL set up so that when someone requests it, an alert is generated and sent to its owner. The URL is usually hidden by linking it to a document with a name like \"my passwords\" or something similar. Then, when someone comes snooping around and opens the file, you are notified. This provides an effective way to detect hackers during post-exploitation.\n\n## Roadmap\n- [x] \u003cb\u003eBasic server \u0026 client\u003c/b\u003e\n- [x] \u003cb\u003eLog file for alerts (could integrate with SIEM)\u003c/b\u003e\n- [ ] \u003cb\u003eTwilio/email integration?\u003c/b\u003e\n- [ ] \u003cb\u003eMore server response types\u003c/b\u003e\n\u003cp\u003eMore things might appear...\u003c/p\u003e\n\n## Installation\nYou have 2 options: you can either download a precompiled version of both the client and the server from the releases tab. Downloading a precompiled version is recommended.\n\n### Compiling from source:\n```bash\ngit clone https://github.com/Varppi/LiteCanary # Clone the repo\ncd LiteCanary # Go into the directory\ngo build ./cmd/server/server.go # Compile the server (make sure Go is installed)\ngo build ./cmd/cli/cli.go # Compile the cli\n```\n\n## Usage\n```\n./server \u0026 # Starts server \n./cli --url http://host:port/basepath # Open CLI\n```\n\n## Configuration\nYou can configure the server in 2 ways, via a config file called \"litecanary.conf\" in the same directory as the executable or by using the command line parameters. \n\n### Config file\nThe following settings are currently available:\n```env\nnoregistration=\u003cbool\u003e # Disables registration, you will be generated random admin credentials when server is started Default: false\n\ndebug=\u003cbool\u003e # Shows debug information Default: false\n\ndatabaselocation=\u003cstring\u003e # SQLite server path. Examples: :memory:, ./test.db  Default: :memory:\n\nlistener=\u003cstring\u003e # Host:port to listen on. Default: 127.0.0.1:8080\n\nbasepath=\u003cstring\u003e # HTTP base path for the api. Default: /api/\n\npublickey=\u003cstring\u003e # Path to SSL public key. SSL is disabled by default. Default: \"\"\n\nprivatekey=\u003cstring\u003e # Path to SSL private key. SSL is disabled by default. Default: \"\"\n\nlog=\u003cstring\u003e # Path to log file. Default: \"\" (disabled)\n```\n\n### Command line parameters\n```\n-base string\n      base path for the api (/api/)\n-cert string\n      public key for the rest api\n-database string\n      database location (./test.db, :memory:)\n-debug\n      enables or disables debug information\n-key string\n      private key for the rest api\n-listener string\n      listener (127.0.0.1:8080)\n-log string\n      log file (disabled by default)\n-no-req\n      disables registration\n```\n\n## Other\n\n### Cli help\n```\nhelp: displays help page\nexit: exits the program\n\nuser:\n reset \u003cnew password\u003e: resets user password\n deleteme: deletes your account and canaries (WARNING: YOU WILL NOT BE PROMPTED FOR A CONFIRMATION)\n login \u003cusername\u003e \u003cpassword\u003e: logs in\n register \u003cusername\u003e \u003cpassword\u003e: registers a new user. please don't use spaces in your username nor password\n\nacceptable canary types:\n image: a 1x1 cyan pixel. (for emails and documents)\n text: displays \"This is a test page.\"\n redirect: redirects the user to a specific url\n\ncanary:\n wipe \u003cid\u003e: clears the event history\n rm \u003cid\u003e: deletes specific canary.\n new \u003cname\u003e \u003ctype\u003e: creates a new canary.\n update \u003cid\u003e \u003cname\u003e \u003ctype\u003e \u003credirect\u003e: update a canary. redirect can be anything if you don't use it.\n get \u003cid\u003e: gets all the events for a specific canary.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarppi%2Flitecanary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarppi%2Flitecanary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarppi%2Flitecanary/lists"}