{"id":20957530,"url":"https://github.com/junobuild/hacks","last_synced_at":"2025-07-09T03:10:41.791Z","repository":{"id":190224795,"uuid":"682198178","full_name":"junobuild/hacks","owner":"junobuild","description":"A collection of hacks and workarounds for Juno and its outer ecosystem","archived":false,"fork":false,"pushed_at":"2023-10-07T18:50:34.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-30T17:58:42.896Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junobuild.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-23T16:48:25.000Z","updated_at":"2023-10-07T18:49:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"17494d65-5387-447a-8ce5-780714319971","html_url":"https://github.com/junobuild/hacks","commit_stats":null,"previous_names":["buildwithjuno/hacks","junobuild/hacks"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/junobuild/hacks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junobuild%2Fhacks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junobuild%2Fhacks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junobuild%2Fhacks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junobuild%2Fhacks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junobuild","download_url":"https://codeload.github.com/junobuild/hacks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junobuild%2Fhacks/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264384389,"owners_count":23599612,"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","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":"2024-11-19T01:34:17.002Z","updated_at":"2025-07-09T03:10:41.774Z","avatar_url":"https://github.com/junobuild.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hacks\n\nA collection of hacks and workarounds for Juno and its outer ecosystem.\n\n## Table of contents\n\n- [Canister to Satellite](#canister-to-satellite)\n\n## Canister to Satellite\n\n⚠️ This method has never been tested and is not yet functional. Reach out Juno first if you wish to use it. ⚠️\n\nThis hack aims to transform an existing canister on the IC mainnet into a Juno satellite that can be administered by a developer and their mission control.\n\n1. Collect following principals on Juno's console:\n\na. Your mission control ID available in [https://console.juno.build/mission-control/](https://console.juno.build/mission-control/)\n\nb. Your developer ID in [https://console.juno.build/settings](https://console.juno.build/settings)\n\n2. Collect your terminal Juno CLI controller ID running `juno whoami`.\n\n3. Ensure that your local dfx principal currently in use is a controller of your existing canister.\n\nFollowing command must succeed:\n\n```bash\ndfx canister status \u003cyour-canister-id\u003e --network ic\n```\n\n4. Add your two Juno's principals to the list of controllers of your existing canister.\n\n```bash\ndfx canister update-settings \u003cyour-canister-id\u003e --add-controller \u003cmission-control-id\u003e --network ic\ndfx canister update-settings \u003cyour-canister-id\u003e --add-controller \u003cdeveloper-id\u003e --network ic\ndfx canister update-settings \u003cyour-canister-id\u003e --add-controller \u003ccli-id\u003e --network ic\n```\n\n5. Edit [canister-to-satellite.sh] to set your Juno's principals and targeted canister ID.\n\n6. Run the script [canister-to-satellite.sh] to transform the canister into a Satellite.\n\n⚠️ Be aware that transforming the canister will wipe its state ⚠️\n\n7. At this point you might want to deploy your dapp to your new Satellite.\n\n- In your dapp project, manually edit the `satelliteId` in `juno.json`.\n- Build your dapp if required.\n- Deploy running `juno deploy`.\n\n8. Finally, we need to attach your new satellite to your mission control. That way, it shall appear in Juno's console.\n\n```bash\nnpm ci\nnpm run attach-satellite -- --mission_control_id=\u003cmission-control-id\u003e --satellite_id=\u003cyour-canister-id\u003e --name=\u003ca-name-for-your-satellite\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunobuild%2Fhacks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunobuild%2Fhacks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunobuild%2Fhacks/lists"}