1a35e1
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Versions and GitHub Sync Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

Your note will be visible on your profile and discoverable by anyone.
Your note is now live.
This note is visible on your profile and discoverable online.
Everyone on the web can find and read all notes of this public team.
See published notes
Unpublish note
Please check the box to agree to the Community Guidelines.
View profile
Engagement control
Commenting
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Suggest edit
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
Emoji Reply
Enable
Import from Dropbox Google Drive Gist Clipboard
   owned this note    owned this note      
Published Linked with GitHub
2
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
# Representing organizations on ENS **Author:** 1a35e1.eth <arnold@lighthouse.cx> **WG Coordinator:** jkm.eth <james@lighthouse.cx> **Version:** 0.5.0-draft **Date:** 9 June 2025 **ENSIP-X**: Representing organizations on ENS --- ## Background At [Lighthouse](https://lighthouse.cx/), we surface DAO metadata from multiple systems to help users vote more effectively on mobile. Currently, much of this data (including contract addresses and delegate information) requires manual discovery and ingestion. We would prefer to source and present this data from an official, public canonical source such as ENS, rather than relying on manual updates. ## Introduction This RFC outlines a standard for DAOs to write metadata to ENS in a canonical manner, building on historical attempts in the ecosystem. ENS innovations like subnames, CCIP-Read, wildcard domains, and the upcoming Namechain L2 provide the components for a global, trustless, and crawlable graph of organizational data. We propose a minimal, flexible schema that can: * Model DAO structures, including delegates, working groups, and treasuries. * Store structured DAO metadata via ENS text records. * Facilitate discovery of DAO-related information. * Support fine-grained attributes that can be resolved from diverse off-chain vendors. ## Approach ENS is uniquely positioned to become the canonical source of truth for organization metadata across EVM-aligned blockchains. Already established as the leader in on-chain identity, a natural evolution is to explore how ENS’s architecture could be leveraged for organizations at scale. Key considerations include: > *Hierarchical registry* ENS’s support for subnames means subgroups of a DAO can be organized under a single root. This hierarchical naming allows for straightforward traversal of the DAO’s structure from a known root domain. Subnames with well-defined namespace labels (e.g., "delegate", "wg") encode an organizational structure that is easily discoverable and portable. > *Data storage and formats* ENS text records provide a verified on-chain source of truth for metadata. These records can also serve as organization-approved anchors to off-chain data sources (via content URIs), adding portability and trustworthiness to the data. By standardizing the keys and formats of these text records, DAOs can ensure their data is widely consumable. > *Permissions* Subname management and resolver controls give DAOs full control over access and schema evolution. There’s no need for custom admin logic for maintaining a registry when using ENS; existing tools like Safe multisigs or role-based systems like Hats can be used to manage name ownership and updates. This approach aligns with typical on-chain governance practices (e.g. a DAO-controlled multisig updating ENS records after a governance proposal passes). > *Tooling (SDKs / CLIs)* By leaning on existing infrastructure, developers and integrators can leverage standard ENS libraries (such as ensjs or viem) to read and write DAO registry data. There is also a rich design space for extending functionality via off-chain resolvers, which can be used to fetch complex or voluminous data on demand without bloating on-chain storage. ## Specification ### Schema declaration To trustlessly opt in to this standard, an organization sets a `dao.registry.schema` TXT record on its root ENS name. The value of this record is a URI (e.g. HTTP(S) link or IPFS CID) pointing to a JSON schema file that defines the structure of the DAO’s ENS records. This schema informs indexers how to traverse and interpret all related records. ```json ens.eth └── [dao.registry.schema]: "https://ens.xyz/ensipx/0.1.4/schema.json" ``` Benefits: * **Opt-in and Evolvable**: Organizations can choose to opt in and easily adopt evolving standards by updating the schema reference. If an organization wishes to deviate from a standard spec, it can fork or modify the schema and declare it in this record. * **Interoperable Parsing**: Downstream consumers (indexers, UIs, wallets) can parse the DAO’s ENS records according to the declared schema. Even if a schema is forked, as long as it remains compliant with the base structure, it softens the burden on indexers by retaining familiar patterns. ### Top-level metadata The root ENS name stores key metadata about the DAO as ENS text records. For example, a DAO might set the following records on its root name (the exact keys and schema are to be determined): ``` ens.eth ├── [dao.name]: "ENS DAO" ├── [dao.description]: "Ethereum Name Service" ├── [dao.website]: "https://ens.domains" ├── [dao.logo]: "ipfs://Qm.../ens-logo.png" │ ├── [contracts]: "JSON TYPED ARRAY" │ ├── [governance]: "JSON TYPED ARRAY" │ ├── [dao.registry.schema]: "https://host/schemas/0.1.4/schema.json" └── [dao.registry.updated]: "2025-06-13T10:00:00Z" ``` In this layout: * `dao.name`, `dao.description`, `dao.website`, `dao.logo` provide human-readable basic info. * `contracts` and `governance` can serialise typed JSON definitions. * `dao.registry.schema` ensures the schema is discoverable as part of the metadata, and `dao.registry.updated` is a convenience entry containing the timestamp of the last update to the registry data. ### Subname Namespace design Subnames are used to categorize groups and accounts within the DAO’s ENS namespace. By convention, specific prefixes (namespaces) designate different categories. For example, a DAO might use a prefix like `wg` for working groups and `delegate` for delegates: ``` ens.eth ├── wg.ens.eth (working groups category) | ├── public-goods.wg.ens.eth (a specific working group) | └── retro-funding.wg.ens.eth (another working group) | └── delegate.ens.eth (delegates category) ├── alice.delegate.ens.eth (delegate account for Alice) └── bob.delegate.ens.eth (delegate account for Bob) ``` In this example, `wg.ens.eth` is a subname that serves as a container for working groups, and `delegate.ens.eth` is a container for delegate entries. The prefixes (`wg`, `delegate`, etc.) are reserved to represent those categories in a structured way. This naming convention allows programmatic discovery: an indexer could fetch all subnames under ens.eth and immediately distinguish categories by these prefixes. ### Validation The JSON schema referenced in `dao.registry.schema` dictates which ENS TXT record keys are valid and what formats their values should have. In other words, it acts as the contract for what data the DAO is expected to provide and how. For example, if the schema defines `dao.name` as a simple string, then setting `dao.name` to a HTTP URI (like "https://...") would be invalid according to the spec. The schema can also define reserved keywords and patterns for names and keys. For instance, the spec might reserve certain prefixes so that any subname matching `*.(wg|council|group|committee).<root>.eth` is recognized as a group category. ### Delegates A subname can represent a delegate or any role-bearing individual in the organization. The DAO can create a delegate subname and set the delegate’s EOA (Externally Owned Account) as the manager/controller of that subname. This allows the delegate themselves to maintain their metadata (profile, statement, status, etc.) within the DAO’s namespace. The delegate’s subname would contain TXT records following a standard format for delegate information. For example: ```json ens.eth └── alice.delegate.ens.eth # Optional fields: ├── forum.username: "AliceInSpace" ├── delegate.profile: "alice.eth" (e.g. ENS name or profile link) ├── delegate.metrics: "https://example.com/delegates/alice" (off-chain stats) # Required fields: ├── delegate.name: "Alice Wonderland" ├── delegate.status: "active" ├── delegate.of: "ens.eth, uniswap.eth" (DAOs this person represents) ├── delegate.groups: "wg.meta.ens.eth" (groups this delegate is part of) └── delegate.statement: "ipfs://Qm...Baz" (IPFS hash of delegate statement) ``` In the above example, `alice.delegate.ens.eth` is a delegate entry. Alice could directly update her own delegate profile since she is the controller of that subname. The `delegate.of` field indicates the DAOs that Alice is a delegate for (self reported), and delegate.groups might list any internal groups or committees she is part of within that DAO. All subnames under `*.delegate.ens.eth` would be expected to follow this schema for delegates. ## Ecosystem unlocks Adopting a shared ENS-based registry for DAO metadata unlocks several ecosystem benefits: ### Attestations DAOs that conform to this spec can be badged or highlighted in user interfaces as “*verified*” or "*compliant*", enhancing their credibility. Furthermore, third parties (reputation services or standards bodies) could issue on-chain attestations that a DAO’s registry setup adheres to the standard. This can build trust with users that the DAO’s data is reliable and structured. ### Delegate discovery Using this registry, it becomes easier to discover which DAOs a given address or individual is involved in. For example, if we want to find all DAOs where `charlie.eth` is a delegate, a tool could search for ENS subnames controlled by charlie.eth’s address. If charlie.eth is set as the manager of charlie.delegate.uniswap.eth and charlie.delegate.1inch.eth, one can infer Charlie is a delegate in Uniswap and 1inch DAOs just by traversing ENS records: ```sh charlie.eth ├── charlie.delegate.uniswap.eth │ ├── delegate.statement: "Uniswap is the best AMM!" │ └── delegate.status: "active" └── charlie.delegate.1inch.eth ├── delegate.statement: "1inch is the best aggregator!" └── delegate.status: "active" ``` This cross-DAO view of participation is enabled by the common naming scheme and the ability to search ENS for subdomains by manager address. ### Accounting DAOs may opt in to disclose associated treasury addresses or assets using this schema. For example, a DAO could list treasury or multisig addresses under a known key (like treasury.*.eth subnames or a [dao.treasury] record). This would enable easier programmatic aggregation of a DAO’s on-chain assets for reporting and analytics. ### Monetized Data Feeds (Micropayments) Offchain reads combined with emerging standards like [x402](https://www.x402.org/) (an HTTP 402-based micropayment protocol for web APIs) presents a way to monetize data retrieval. DAOs could delegate authority to trusted data providers who serve complex data (e.g. historical voting records or analytics). These providers might charge a small fee per query (using the x402 model). Because the ENS record points to the provider's URI, the entire flow can be automated: wallets or applications retrieve the TXT record, follow the URI, receive a “402 Payment Required” response, pay the fee, and get the data — all in a seamless, trust-minimized manner. ### Federation This architecture is vendor-agnostic. Unlike relying on one monolithic subgraph or a single API, a DAO can choose different providers for different data types and simply update the ENS records to point accordingly. All data pointers still live under the DAO’s ENS domain, ensuring users and apps have a unified namespace to query. Some implications of this model: * **Specialized Data Providers**: Niche providers can serve domain-specific information (for example, a service that specializes in treasury portfolio analytics or governance proposal history). They can offer data for free or monetize it (using the x402 pay-per-use standard) depending on the DAO’s preference. * **Trustless Routing**: Since the DAO controls the ENS record pointing to a provider, users can trust that a query is being directed to a source endorsed by the DAO. Service providers can facilitate the requests, ensuring accountability and aligning with DAO funding (e.g., if a DAO wants to subsidize certain data queries for its users). Those familiar with GraphQL federation understand the how this solves fragmentation at scale. ## Ease of use To make managing these records practical at scale, we propose using a set of proxy contracts or specialized resolvers to optimize updates. This would allow batching multiple ENS record updates in one transaction (saving gas) and ensure that all updates conform to the spec’s rules. For example, a DAO could have a custom resolver contract that enforces the schema (rejecting invalid records) and groups writes so that a complex update (like rotating a delegate and updating their info across several fields) happens atomically. This approach guarantees consistency in a complex multi-part update and can integrate with existing DAO frameworks (e.g., the resolver only allows the DAO’s multisig or governance contract to execute certain updates). ## Impact If widely adopted, this ENS-based DAO registry could have significant impact: * **Interoperable**: Many voting and governance platforms (Lighthouse, Agora, Tally, Snapshot, etc.) could read from and write to a common ENS-based registry. This means a delegate’s profile or a DAO’s info updated via one interface would instantly be available to all others, reducing fragmentation. * **Discoverable**: Information is stored on ENS, which is publicly accessible and indexable. Any interface or user can discover a DAO’s structure and key info by querying the ENS name, without needing to find documentation or APIs for that DAO. * **Low Cost**: DAOs only need to write data once to ENS (which is relatively cheap, especially with text records on L2 or via Namewrapper). Consumers can then query this data as needed, caching it or indexing it, without imposing additional costs on the DAO for each query (beyond optional vendor fees). * **Discoverable**: Any interfaces (not restricated to voting) have a cannonical source of truth information. * **Flexible Permissioning**: The model works for both closed and open contribution. A DAO can restrict who can create or edit subnames (for example, only the DAO multisig can add new delegates), or it can allow self-service registration with controlled permissions (using ENS Namewrapper features like fuses to allow self-subdomains). Each DAO chooses its desired level of decentralization in managing the data. * **Upgradable and Extensible**: Because this relies on ENS Namewrapper and resolvers, DAOs can upgrade their setup over time. Namewrapper allows features like revocable subdomains, expiring records, and versioned data schemas. If the standard evolves or a DAO’s needs change, they can introduce a new schema version and update the dao.registry.schema record to signal the changes. ## Moonshots Looking ahead, a few aspirational ideas could further enhance this system: * **zkTLS for Offchain-Reads**: Explore using zkTLS (zero-knowledge proofs for TLS) to verify off-chain data. This could provide cryptographic guarantees that the data from an HTTPS endpoint is authentic and untampered, without relying entirely on trust in the data provider. * **schema evolution**: * `[dao.announcements]` pointer to official announcements stream * `[*.calendar]`, pointer to open calendar ## Next Steps - Finalize schema and required/reserved fields - Create ENSIP proposal draft - Implement reference registry and resolver contracts - Deploy to testnets with sample DAOs (ENS, Gitcoin, Optimism) - Build open-source CLI to browse and introspect structure ```sh $ ens inspect ens.eth --format=tree => 🔗 Canonical ENS: ens.eth 🏛 Working Groups: ├── metagov.ens.eth │ ├── lead: 0x8f...12b │ ├── text[charter]: https://gov.ens.domains/t/metagov-charter │ └── budget: $320,000 USDC (vesting: 6mo) ├── publicgoods.ens.eth │ ├── lead: 0xd1...77a │ ├── text[charter]: CCIP → https://api.ensdao.eth/ccip/publicgoods │ └── budget: $200,000 USDC ├── ecosystem.ens.eth │ └── notes: “Merged with publicgoods in 2025” 🎙 Delegates (delegate.of=ens.eth) ├── alice.eth (0xabc...123) │ ├── votingPower: 12,500 ENS │ └── text[profile]: https://delegate.xyz/alice ├── bob.eth (0xdef...456) │ └── votingPower: 4,800 ENS 💰 Treasury ├── contracts: │ ├── main: 0x1234...beef (Safe) │ ├── vesting: 0xbeef...cafe (LinearVesting) ├── totalAssets: 1.8M USDC + 120k ENS $ ensdao inspect ens.eth --format=json => { "canonical": "ens.eth", "structure": { "groups": { "metagov.ens.eth": { "lead": "0x8f...12b", "mandate": "0x8f...12b" }, "publicgoods.ens.eth": { "lead": "0x8f...12b", "mandate": "0x8f...12b" }, "ecosystem.ens.eth": { "notes": "Merged with publicgoods in 2025" } }, "delegates": [ { "name": "bob.eth", "address": "0xdef...456", "votingPower": 4800, "delegateOf": "ens.eth" } ... ], "treasury": { "contracts": { "main": { "type": "Safe", "address": "0x1234...beef" }, "vesting": { "type": "LinearVesting", "address": "0xbeef...cafe" } }, "totalAssets": { "USDC": 1800000, "ENS": 120000 } } }, "metadata": { "fetchedAt": "2025-06-19T10:00:00Z", "signature": "0x...", "version": "v0.4.0-draft" } } ``` ## Appendix ### References * CCIP spec, https://eips.ethereum.org/EIPS/eip-3668#use-of-ccip-read-for-transactions * Offchain meta resolution discussions * https://discuss.ens.domains/t/draft-ensip-off-chain-name-meta-resolution/17019/8 * https://discuss.ens.domains/t/ensip-supersession-resolver-implementations-and-client-integrations/19771 * https://discuss.ens.domains/t/ensip-16-v2-metadata-api-improvements/19500 ### Previous progress Related themes from options that have been explored in the past. The Final Approach lists what has been deployed thus far. Sources listed below. | Theme | Options Explored | Final Approach | |--------------------------|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| | Registry Architecture | Global registry, per-chain, per-DAO | Per-DAO deployment; frontends support selected chains | | Data Storage | All on-chain, hybrid (on-chain + IPFS), off-chain (GitHub, Ceramic) | Hybrid: minimal on-chain data + IPFS for metadata | | Write Permissions | Only delegates, anyone with claim, whitelisted third parties | Delegate-only writes with signature; optional admin whitelist | | Schema and Validation | Single schema, multiple schemas, schemaless; on-chain vs frontend validation | Versioned schemas, validated via SDK, not enforced on-chain | | Tooling (SDK + Subgraph) | Build SDK (sign JSON, gasless), subgraph for indexing per chain | Modular SDK + subgraph, chain-aware and DAO-specific | | Governance and Roles | No roles, admin/multisig, upload time limits | Multisig admin role for whitelist + schema management | Past proposals and implementations that this work builds upon: * April 2025, [Towards a DAO ID](https://daostar.org/reports/daoid.pdf): A report by DAOstar that introduced concepts for standardized DAO identities and cross-platform compatibility. * March 2024, [DAOIP-7](https://docs.daostar.org/DAOIP/7): A DAOstar proposal to use Ethereum Attestation Service (EAS) for recording certain DAO data. * Nov 2023, [DAOIP-5](https://github.com/metagov/daostar/commits/main/DAOIPs/daoip-5.md): An earlier iteration of a DAO metadata standard (Metagov/DAOstar initiative). * Nov 2023, [DAO delegate registry](https://github.com/show-karma/dao-delegate-registry): An smart contract implementation of a delegate registry, highlighting real-world needs for delegate info. * June 2023, [DAO Delegate Registry Specification](https://docs.google.com/document/d/1q8DTt7zvMQ-fj8mGgJ8f8zA7icjn3aqxZzgxalRPR9w/edit?tab=t.0#heading=h.ox58ddltxb8r): A collaborative spec (Google Doc) that catalogued common delegate attributes across platforms. * Feb 2022, [ERC-4824: Common Interfaces for DAOs](https://eip.tools/eip/4824): A DRAFT Ethereum standard that laid groundwork for representing DAO data in a unified way on-chain and off-chain. > *Ecosystem feedback* When a previous solution was presented in [Arbitrum DAO](https://forum.arbitrum.foundation/t/an-eip-4824-powered-daouri-for-arbitrum-dao/26386), an overwhelming majority of voters were in favour of an ENS based approach. This categorical support should hopefully encourage DAO members to support and take action. ![Screenshot 2025-06-19 at 00.27.21](https://hackmd.io/_uploads/Bkjtoal4eg.png) * https://dhive.io/proposal/1392

Import from clipboard

Paste your markdown or webpage here...

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lose their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
Upgrade
All
  • All
  • Team
No template.

Create a template

Upgrade

Delete template

Do you really want to delete this template?
Turn this template into a regular note and keep its content, versions, and comments.

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

By clicking below, you agree to our terms of service.

Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
Wallet ( )
Connect another wallet

New to HackMD? Sign up

Help

  • English
  • 中文
  • Français
  • Deutsch
  • 日本語
  • Español
  • Català
  • Ελληνικά
  • Português
  • italiano
  • Türkçe
  • Русский
  • Nederlands
  • hrvatski jezik
  • język polski
  • Українська
  • हिन्दी
  • svenska
  • Esperanto
  • dansk

Documents

Help & Tutorial

How to use Book mode

Slide Example

API Docs

Edit in VSCode

Install browser extension

Contacts

Feedback

Discord

Send us email

Resources

Releases

Pricing

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions and GitHub Sync
Get Full History Access

  • Edit version name
  • Delete

revision author avatar     named on  

More Less

Note content is identical to the latest version.
Compare
    Choose a version
    No search result
    Version not found
Sign in to link this note to GitHub
Learn more
This note is not linked with GitHub
 

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub
      • Please sign in to GitHub and install the HackMD app on your GitHub repo.
      • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
      Learn more  Sign in to GitHub

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Include title and tags
      Available push count

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully