{"id":30703162,"url":"https://github.com/dfinity/quill","last_synced_at":"2025-09-02T16:56:34.978Z","repository":{"id":37250152,"uuid":"367394175","full_name":"dfinity/quill","owner":"dfinity","description":"Governance \u0026 ledger toolkit for cold wallets","archived":false,"fork":false,"pushed_at":"2025-08-26T13:54:21.000Z","size":1205,"stargazers_count":84,"open_issues_count":24,"forks_count":29,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-08-26T18:54:43.275Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/dfinity.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-14T14:50:53.000Z","updated_at":"2025-08-26T13:54:18.000Z","dependencies_parsed_at":"2023-11-07T05:13:23.980Z","dependency_job_id":"bad1b538-1847-436a-afbe-1a7aec9e919a","html_url":"https://github.com/dfinity/quill","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/dfinity/quill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fquill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fquill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fquill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fquill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dfinity","download_url":"https://codeload.github.com/dfinity/quill/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fquill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273317765,"owners_count":25084037,"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-09-02T02:00:09.530Z","response_time":77,"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":[],"created_at":"2025-09-02T16:56:32.854Z","updated_at":"2025-09-02T16:56:34.962Z","avatar_url":"https://github.com/dfinity.png","language":"Rust","readme":"# quill\n\nMinimalistic ledger and governance toolkit for cold wallets.\n\n`quill` is a toolkit for interacting with the Network Nervous System's (NNS) canisters using self-custody keys. These\nkeys\ncan be held in an air-gapped computer (a computer\nthat has never connected to the internet) known as a cold wallet. To support cold wallets, `quill` takes a two-phase\napproach to sending query/update calls to the IC. In the first phase, `quill` is used with the various subcommands to\ngenerate and sign messages based on user input, without needing access to the internet. In the second phase, the signed\nmessage(s) are sent to the IC. Since this requires connection to boundary nodes via the internet, cold-wallet users will\ntransport the signed message(s) from the air-gapped computer (i.e. with a USB stick, or via QR code) to a computer connected to the\ninternet.\n\n## Disclaimer\n\nYOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT USE OF THIS SOFTWARE IS AT YOUR SOLE RISK.\nAUTHORS OF THIS SOFTWARE SHALL NOT BE LIABLE FOR DAMAGES OF ANY TYPE, WHETHER DIRECT OR INDIRECT.\n\n## Usage\n\nThis will sign a transfer transaction and print to STDOUT:\n```shell\nquill transfer \u003caccount-id\u003e --amount \u003camount\u003e --pem-file \u003cpath\u003e\n```\n\nTo display the signed message in human-readable form:\n```shell\nquill send --dry-run \u003cpath-to-file\u003e\n```\n\n`quill` could be used on an online computer to send any signed transaction:\n\n```shell\nquill send \u003cpath-to-file\u003e\n```\n\nTo get the principal and the account id:\n```shell\nquill public-ids --pem-file \u003cpath\u003e\n```\n\n### Governance\n\nThis is how you’d stake/top-up a neuron:\n```shell\nquill neuron-stake --amount 2.5 --name 1 --pem-file \u003cpath\u003e\n```\n\nManaging the neuron:\n```shell\nquill neuron-manage \u003cneuron-id\u003e [OPERATIONS] --pem-file \u003cpath\u003e\n```\n\nAll the commands above will generate signed messages, which can be sent on the online machine using the `send` command\nfrom above.\n\n## Download \u0026 Install\n\nUse pre-built binaries from the latest [release](https://github.com/dfinity/quill/releases).\n\n### MacOS (Intel Chip \u0026 Apple Silicon)\n\n#### Install quill\n1. Download the file named `quill-macos-x86_64`\n2. Move the file to your `/usr/local/bin` directory to make it available system-wide\n\n```shell\nsudo mv quill-macos-x86_64 /usr/local/bin/quill\n```\n\n3. Make the file executable\n\n```shell\nchmod +x /usr/local/bin/quill\n```\n\n4. Run quill\n\n```shell\nquill -h\n```\n\n### Linux\n\n1. Download the file specific to your system architecture\n    1. for x86 download `quill-linux-x86_64`\n    2. for arm32 download `quill-arm_32`\n    3. for Alpine download `quill-linux-x86_64-musl`\n\n2. Move the file to your `/usr/local/bin` directory to make it available system-wide\n\n```shell\nsudo mv quill-linux-x86_64 /usr/local/bin/quill\n```\n\n3. Make the file executable\n\n```shell\nchmod +x /usr/local/bin/quill \n```\n\n4. Run quill\n\n```shell\nquill -h\n```\n\n### Windows\n\n1. Download the file named `quill-windows-x86_64.exe`\n\n2. Move it and a shell to a convenient location, e.g.\n\n```ps1\nmove-item quill-windows-x86_64.exe ~\\quill.exe\nset-location ~\n```\n\n3. Run quill\n\n```ps1\n.\\quill.exe -h\n```\n\n## Build\n\nTo compile `quill` run:\n\n```sh\ncargo build --release --locked\n```\n\nAfter this, find the binary at `target/release/quill`.\n\nQuill has two optional features, all activated by default:\n\n- `hsm`, to enable PKCS#11 HSM support (requires runtime dynamic linking)\n- `ledger`, to enable Ledger Nano support (requires runtime dynamic linking, and incompatible with armv6)\n\nTo build a version of Quill compatible with statically-linked-only environments, such as Alpine, run:\n\n```sh\ncargo build --release --locked --no-default-features\n```\n\n### Building with Docker/Podman\n\nQuill can be reproducibly built or cross-compiled in a Docker container using [`cross`](https://github.com/cross-rs/cross).\n\n1. Follow the instructions at [cross-rs/cross](https://github.com/cross-rs/cross) to install `cross`.\n2. If using a target with particular restrictions, such as `x86_64-apple-darwin` or `x86_64-pc-windows-msvc`, ensure you have built a local image via the instructions at [cross-rs/cross-toolchains](https://github.com/cross-rs/cross-toolchains).\n3. Run `cross build --release --locked --target \u003ctarget platform\u003e`, e.g. `--target x86_64-unknown-linux-gnu` or `--target armv7-unknown-linux-gnueabihf`.\n\n## Testnets\n\nIf you have access to an Internet Computer testnet (for example, a version the\nreplica binary and NNS running locally), you can target quill at this test\nnetwork by setting the `IC_URL` environment variable to the full URL. In addition\nto that, it is required to use the `--insecure-local-dev-mode` flag. For\nexample:\n```shell\nIC_URL=https://nnsdapp.dfinity.network quill --insecure-local-dev-mode --pem-file \u003cpath\u003e list-neurons\n```\n\n## Contribution\n\nContributions to Quill are welcomed! For information about contributing, see [CONTRIBUTING.md](CONTRIBUTING.md). Contributors must agree to a [CLA](https://github.com/dfinity/cla).\n\n## Credit\n\nOriginally forked from the [SDK](https://github.com/dfinity/sdk).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfinity%2Fquill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdfinity%2Fquill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfinity%2Fquill/lists"}