{"id":37146804,"url":"https://github.com/anddimario/interstellar","last_synced_at":"2026-01-14T17:05:14.733Z","repository":{"id":259436765,"uuid":"867047786","full_name":"anddimario/interstellar","owner":"anddimario","description":"Application deployer - Watch repository release and deploy binary using canary or blue green deployment.","archived":false,"fork":false,"pushed_at":"2024-10-24T11:51:43.000Z","size":38,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-25T11:28:44.880Z","etag":null,"topics":["deploy","deployment","go","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anddimario.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}},"created_at":"2024-10-03T11:05:44.000Z","updated_at":"2024-10-24T11:51:46.000Z","dependencies_parsed_at":"2024-10-25T11:31:23.224Z","dependency_job_id":"d37cac48-6dbd-4b76-a010-570d227d9bb7","html_url":"https://github.com/anddimario/interstellar","commit_stats":null,"previous_names":["anddimario/interstellar"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/anddimario/interstellar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anddimario%2Finterstellar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anddimario%2Finterstellar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anddimario%2Finterstellar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anddimario%2Finterstellar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anddimario","download_url":"https://codeload.github.com/anddimario/interstellar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anddimario%2Finterstellar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28427189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["deploy","deployment","go","golang"],"created_at":"2026-01-14T17:05:14.027Z","updated_at":"2026-01-14T17:05:14.689Z","avatar_url":"https://github.com/anddimario.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Interstellar\n\nApplication deployer\n\n## Features\n\n- monitor and get release from github\n- run executable\n- blue green and canary deploy\n- rollback\n- recovery from crash\n- cli\n- horizontal scaling\n\n## Install and requirements\n\n- Deps: `gh` (github cli)\n\n## CLI\n\n```bash\ninterstellar -h\n```\n\n### Dev\n\n```bash\ngo run main.go -h\n```\n\n## Diagrams\n\n### New release Check\n\n```mermaid\nstateDiagram-v2\n  check_ignore: Check if ignore\n  check: Check release\n  download: Download new release\n  choose_port: Choose a port\n  add_backend: Add new process as backend\n  create_vm: Run the process\n  canary: Canary\n  blue_green: Blue green\n  state new_release \u003c\u003cchoice\u003e\u003e\n  state deploy_type \u003c\u003cfork\u003e\u003e\n  state done_deploy \u003c\u003cjoin\u003e\u003e\n  check --\u003e new_release\n  new_release --\u003e check : No new release\n  new_release --\u003e check_ignore\n  check_ignore --\u003e download\n  download --\u003e choose_port\n  choose_port --\u003e add_backend \n  add_backend --\u003e create_vm\n  create_vm --\u003e deploy_type\n  deploy_type --\u003e canary\n  deploy_type --\u003e blue_green\n  canary --\u003e done_deploy\n  blue_green --\u003e done_deploy\n  done_deploy --\u003e [*]\n```\n\n### Canary deploy\n\n```mermaid\nstateDiagram-v2\n  wait: Wait canary window\n  check: Check if healthy\n  add: Add the new version\n  not_healthy: Remove new version\n  remove_old: Remove old version\n  post_deploy: Post deploy actions\n  state is_healthy \u003c\u003cchoice\u003e\u003e\n  check --\u003e is_healthy\n  is_healthy --\u003e add : is healthy\n  is_healthy --\u003e not_healthy\n  add --\u003e wait\n  wait --\u003e remove_old\n  not_healthy --\u003e [*]\n  remove_old --\u003e post_deploy\n  post_deploy --\u003e [*]\n```\n\n### Blue green deploy\n\n```mermaid\nstateDiagram-v2\n  wait: Wait positive healthchecks\n  check: Check if healthy\n  replace: Replace old with new\n  not_healthy: Remove new version\n  post_deploy: Post deploy actions\n  state is_healthy \u003c\u003cchoice\u003e\u003e\n  wait --\u003e check\n  check --\u003e is_healthy\n  is_healthy --\u003e replace : is healthy\n  is_healthy --\u003e not_healthy\n  not_healthy --\u003e [*]\n  replace --\u003e post_deploy\n  post_deploy --\u003e [*]\n```\n\n### Rollback\n\n```mermaid\nstateDiagram-v2\n  check: Check if deploy in progress, or version exists\n  state if_check_ok \u003c\u003cchoice\u003e\u003e\n  get_release: Get Release\n  decompress: Decompress Release\n  start: Start the rollback version\n  remove: Remove the actual version\n  update_config: Update config\n  check --\u003e if_check_ok\n  if_check_ok --\u003e get_release : Check ok\n  if_check_ok --\u003e [*]\n  get_release --\u003e decompress\n  decompress --\u003e start\n  start --\u003e remove\n  remove --\u003e update_config\n  update_config --\u003e [*]\n```\n\n### Recovery from crash\n\n```mermaid\nstateDiagram-v2\n  start: Startup\n  check_deploy: Check if deploy in progress\n  state if_check_ok \u003c\u003cchoice\u003e\u003e\n  kill: Kill other version processes\n  start --\u003e check_deploy\n  check_deploy --\u003e if_check_ok\n  if_check_ok --\u003e kill : Zombie deploy\n  kill --\u003e [*]\n  if_check_ok --\u003e [*]\n```\n\n**NOTE** The healthcheck will remove the backend from the backends list\n\n### Gossip\n\n```mermaid\nstateDiagram-v2\n  broadcast: Notify the peer to another one\n  gossip: Start gossip\n  random: Get random peers\n  notify_list: Notify peer list\n  update_list: Update peer list\n  auth: Auth\n  broadcast --\u003e gossip\n  gossip --\u003e random\n  random --\u003e notify_list\n  notify_list --\u003e auth\n  auth --\u003e update_list\n  update_list --\u003e gossip\n```\n\n### Horizontal scaling\n\nNeeded in config:\n\n```toml\n[ha]\nsecret = 'yoursecrethere'\n```\n\nHorizontal scaling isn't enabled by default, you must run:\n- Start the first node: `interstellar serve -e ADDRESS:PORT`\n- Start another node: `interstellar serve -e ADDRESS:PORT -b ADDRESS:PORT`\n- Commands info: `interstellar serve -h`\n\n**IMP** Communication isn't encrypted and it assumes that the nodes are in a vpc or another isolated environment, the secret is only use as **simple** auth.\n\n## LICENSE\n\n[License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanddimario%2Finterstellar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanddimario%2Finterstellar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanddimario%2Finterstellar/lists"}