MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
The best crypto links, curated by the Kiwi community. Web3, Ethereum, DeFi and more.
MediaJavaScript · CSSGitHub @attestateOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
kiwistand is a p2p node client for a web3 writer friendly Hacker News that nobody controls but everybody co-owns
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Kiwistand is a P2P node client for a web3-friendly Hacker News that nobody controls but everybody co-owns.
Kiwi stores links and upvotes on the protocol level. Thanks to that, users can create their own UIs and permissionlessly create apps on top of it (see: awesome-kiwi for the list of apps and contributors).
You can learn the story behind the project in this 4 min video by Tim Daubenschutz.
• node >= 19 (best to check package.json value though)
• RPC nodes on Ethereum Mainnet & OptimismRead the full README ↗This repository holds the code behind Kiwi News, a community-curated news site for crypto, Ethereum and builder-focused tech links, similar to Hacker News.
Every submission, upvote and comment on Kiwi News is a message signed with an Ethereum key. Nodes exchange these messages over an open peer-to-peer protocol, so all data is public and anyone can verify it. Anyone can run a node or build their own client on top of the same data. The package and protocol are called "kiwistand"; the site is called "Kiwi News".
To post, upvote or comment you connect an Ethereum wallet or create an account with a passkey (no wallet needed). You can add an application key so the site signs on your behalf without a wallet prompt for every action (see Protocol).
All read endpoints are public and need no authentication. CORS is open (Access-Control-Allow-Origin: *), so browser apps can call them directly.
/llms.txt: the main reference for developers and AI agents. It lists every endpoint, the response formats, how to cite Kiwi News, and how to sign and submit messages.GET /api/v1/feeds/hot, /api/v1/feeds/new, /api/v1/feeds/best?period=week: feeds as JSON (?page=0 paginates)GET /api/v1/stories?index=0x…: one story with its commentsGET /api/v1/profile/<address>: ENS name, avatar and social links of an addressGET /stories/context?index=0x…: one story as plain-text Markdown (title, source URL, extracted article text, comments), meant as LLM contextPOST /api/v1/messages, POST /api/v1/list, GET /api/v1/delegations); see llms.txt for the EIP-712 message format.Example:
curl https://news.kiwistand.com/api/v1/feeds/hot
There is also an HTTP API reference at https://attestate.com/kiwistand/main/.
kiwimcp-client/ is a Model Context Protocol server (published on npm as kiwimcp-client) that lets Claude Code and other MCP clients search Kiwi News, read feeds and stories with comments, and look up profiles and karma. Setup instructions are in kiwimcp-client/README.md.
engines in package.json; CI runs on 22.x)OPTIMISM_CRAWLER_RPC_HOSTS below).git clone https://github.com/attestate/kiwistand.git
cd kiwistand
cp .env-copy .env
mkdir anon cache
npm i
cd src/web && npm i && cd ../..
Then edit .env. The variables you have to set:
| Variable | Purpose |
|---|---|
OPTIMISM_RPC_HTTP_HOST | Optimism RPC URL (for example an Alchemy or Infura URL including your key) |
OPTIMISM_CRAWLER_RPC_HOSTS | Optional: comma-separated Optimism RPCs for the delegation crawler. The first is polled for new blocks; eth_getLogs rotates through all of them. |
RPC_HTTP_HOST | Ethereum mainnet RPC URL, for ENS |
DATA_DIR, CACHE_DIR | Where the message database (LMDB) and caches (SQLite and others) live; anon and cache by default |
The other values in .env-copy work as they are for local development. The social posting variables (X, Farcaster, Telegram) and Cloudflare keys are only needed on the production instance.
The dev:* scripts and watch override some variables from .env to run the node in a particular mode, and start it together with the Vite dev server for src/web.
| Script | What it does |
|---|---|
npm run dev:anon | Joins the live network: binds 0.0.0.0, peers with the public bootstrap node, uses DATA_DIR=anon. Site on port 4000, node API on 8443. |
npm run watch | Same settings as dev:anon, restarted by nodemon when src/views or src/http.mjs change. |
npm run dev:bootstrap | Runs a local bootstrap node (IS_BOOTSTRAP_NODE=true, binds 127.0.0.1, DATA_DIR=bootstrap) that does not connect to the live network. Site on port 80. |
npm run dev:anon:local | Binds 127.0.0.1 and peers only with a local bootstrap node, so nothing reaches the live network. Uses DATA_DIR=anonlocal, site on port 4001. |
npm run sync | Crawls the delegation events from Optimism into DATA_DIR. It keeps polling for new blocks; stop it once it repeats the same block range. |
npm run reconcile | Syncs with the chain and the peer-to-peer network with the website disabled (NODE_ENV=reconcile). |
npm run build | Builds the production frontend bundle into src/public. |
To try submitting stories, use dev:bootstrap together with dev:anon:local instead of the live network.
npm run sync to crawl the delegation events from Optimism.npm run reconcile to download all messages from peers. It logs Number of messages added: X as it stores messages.npm run dev:anon (or npm run watch) to run the node with the website.The first page loads of /, /new and /best after a full sync can be slow, because the node verifies and caches every message signature once.
contributing.md describes these steps in more detail.
npm run test:offline # what CI runs; skips tests that call the live site
npm test # all tests, including the MCP client and compression tests against the live site
.github/workflows/deploy.yml runs the offline tests on every push to main and, when the DEPLOY_ENABLED repository variable is "true", builds the frontend and rsyncs it to the production server, the same as npm run deploy does by hand.
More detail:
Protocol and breaking changes are listed in changelog.md.
GPL-3.0-only, see LICENSE. The MCP client in kiwimcp-client/ is MIT-licensed according to its package.json.