Skip to content

docs(hub): Add app signing guide#7012

Merged
danieljanes merged 4 commits intomainfrom
add-hub-app-signing-docs
Apr 16, 2026
Merged

docs(hub): Add app signing guide#7012
danieljanes merged 4 commits intomainfrom
add-hub-app-signing-docs

Conversation

@mohammadnaseri
Copy link
Copy Markdown
Member

No description provided.

Copilot AI review requested due to automatic review settings April 13, 2026 09:17
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0619cb0d4c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


.. code-block:: bash

flwr login
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use flwr login supergrid before app review

This step is likely to fail for default installs because flwr app review loads credentials for SUPERGRID_ADDRESS (framework/py/flwr/cli/app_cmd/review.py), while flwr login without an argument authenticates the current default SuperLink connection (which defaults to local in DEFAULT_FLOWER_CONFIG_TOML). In that common setup, users following this doc will hit Please log in before reviewing app. when they run review; the command here should explicitly match the SuperGrid login flow already documented in how-to-publish-app-on-hub.rst (flwr login supergrid).

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Flower Hub how-to guide documenting app signing/review workflows and links it from existing Hub documentation so users can learn how to evaluate and trust app signatures.

Changes:

  • Add a new “Sign Hub Apps” how-to guide covering key generation, account key registration, and flwr app review.
  • Link the new signing guide from the Hub docs index and from the “use app” / “publish app” guides via tips.
  • Update the How-to Guides toctree to include the new page.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
hub/docs/source/index.rst Adds the new signing guide to the Hub “How-to Guides” toctree.
hub/docs/source/how-to-use-app-from-hub.rst Adds a tip directing readers to check app verifications and linking to the signing guide.
hub/docs/source/how-to-sign-hub-apps.rst New documentation page explaining how signing works and how to sign apps via CLI.
hub/docs/source/how-to-publish-app-on-hub.rst Adds a tip pointing publishers to the signing guide for trusted reviewer verification.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread hub/docs/source/how-to-sign-hub-apps.rst Outdated
Comment on lines +49 to +59
Generate an Ed25519 key pair in OpenSSH format:

.. code-block:: bash

ssh-keygen -t ed25519 -f hub_signing_key -C "hub-review-key"

This creates:

- :code:`hub_signing_key` (private key, keep secret)
- :code:`hub_signing_key.pub` (public key)

Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The guide suggests generating an OpenSSH Ed25519 key with ssh-keygen, but the current CLI loader uses serialization.load_ssh_private_key(..., password=None), which does not support passphrase-protected keys. To prevent users from generating an encrypted key that flwr app review can't load, consider documenting that the key must be unencrypted (e.g., set an empty passphrase, or show ssh-keygen ... -N "").

Suggested change
Generate an Ed25519 key pair in OpenSSH format:
.. code-block:: bash
ssh-keygen -t ed25519 -f hub_signing_key -C "hub-review-key"
This creates:
- :code:`hub_signing_key` (private key, keep secret)
- :code:`hub_signing_key.pub` (public key)
Generate an unencrypted Ed25519 key pair in OpenSSH format:
.. code-block:: bash
ssh-keygen -t ed25519 -f hub_signing_key -C "hub-review-key" -N ""
This creates:
- :code:`hub_signing_key` (private key, keep secret)
- :code:`hub_signing_key.pub` (public key)
.. note::
The private key used with :code:`flwr app review` must currently be
unencrypted. Passphrase-protected OpenSSH private keys are not supported by
the current loader, so use an empty passphrase when generating the key.

Copilot uses AI. Check for mistakes.
@github-actions github-actions bot added the Maintainer Used to determine what PRs (mainly) come from Flower maintainers. label Apr 13, 2026
yan-gao-GY and others added 2 commits April 14, 2026 02:10
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4329f77b1a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".


.. code-block:: bash

ssh-keygen -t ed25519 -f hub_signing_key -C "hub-review-key"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document unencrypted key requirement for app signing

The ssh-keygen example here can produce a passphrase-protected key, but flwr app review currently loads keys with serialization.load_ssh_private_key(..., password=None) (framework/py/flwr/supercore/primitives/asymmetric_ed25519.py:169-173), so encrypted OpenSSH keys fail during signing. Users who follow this guide and set a passphrase will hit private-key load errors despite using Ed25519/OpenSSH, so this step should explicitly require an unencrypted key (or document that passphrase-protected keys are unsupported).

Useful? React with 👍 / 👎.

@danieljanes danieljanes enabled auto-merge (squash) April 16, 2026 09:20
@danieljanes danieljanes merged commit 9f1e306 into main Apr 16, 2026
68 checks passed
@danieljanes danieljanes deleted the add-hub-app-signing-docs branch April 16, 2026 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Maintainer Used to determine what PRs (mainly) come from Flower maintainers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants