Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
LAYER.systems는 데스크톱 형태 Nostr 클라이언트로 피드·프로필·스레드·긴 글을 창으로 열어 이동·크기조절·동시 배치 가능
LAYER.systems — a Nostr client shaped like a desktop: feeds, profiles, threads and long-form articles open as windows you can move, resize and keep side by side.
소셜TypeScript · CSSGitHub @layer-systems온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
LAYER.systems is a Nostr client designed like a desktop operating system. Instead of
navigating between pages, you open apps in windows that can be moved, resized, stacked,
minimized, and kept open side by side. This makes it possible to read a thread, inspect a
profile, and keep your feed available at the same time.
The app is for people who use Nostr and want a focused, multitasking-friendly interface,
as well as contributors interested in building Nostr applications with React and
TypeScript.README 전문 보기 ↗LAYER.systems is a Nostr client designed like a desktop operating system. Instead of navigating between pages, you open apps in windows that can be moved, resized, stacked, minimized, and kept open side by side. This makes it possible to read a thread, inspect a profile, and keep your feed available at the same time.
The app is for people who use Nostr and want a focused, multitasking-friendly interface, as well as contributors interested in building Nostr applications with React and TypeScript.
npub, note, nevent, nprofile, and naddr as links.LAYER.systems reads and writes Nostr events through relays. It does not provide a centralized social database; your relays and signer remain the source of your Nostr data. Some features require a signed-in account, and availability of content depends on the relays you use.
nvm install followed by nvm use reads .nvmrc)Node.js 26.12.1 is the minimum version containing the
October 21, 2026 security fixes.
GitHub Actions reads the patched version from .nvmrc; GitLab CI uses the matching
Node.js image. Update existing local Node.js installations before running development
or build commands. Production serves static files on GitHub Pages and does not run
a Node.js application server.
Clone the repository, install dependencies, and start the Vite development server:
git clone https://github.com/layer-systems/website.git
cd website
npm install
npm run dev
The development server listens on http://localhost:8080. The app has no required environment variables; relay and media-server settings are managed in the app.
Useful commands:
npm run test # Type-check, lint, run Vitest, and create a production build
npm run build # Create the production bundle in dist/
npm run build also creates dist/404.html, which supports client-side routes when the
build is deployed as a static site.
The repository includes a GitHub Actions workflow in
.github/workflows/deploy.yml. It runs on pushes to
main (or manually from the Actions tab), builds the app with the Node.js version in
.nvmrc, and deploys dist/ to GitHub Pages.
For another static host, run npm run build and publish the generated dist/ directory.
Configure the host to serve dist/404.html for unknown paths so direct NIP-19 links
continue to load the client application.
The application is organized into three main layers:
src/os/ Window manager, persistence, layout, and keyboard shortcuts
src/components/os/ Desktop shell, menu bar, windows, and mobile app shell
src/apps/ Nostr and system apps rendered inside windows
src/components/ Shared UI, authentication, and Nostr components
src/hooks/ Data access and application hooks
Apps are registered in src/os/registry.ts. Each app is lazy
loaded and receives a small window-oriented contract, so adding an app normally does not
require changing the router. Read the app guide before adding one.
For protocol reference, see the Nostr protocol documentation.
npm install.npm run test.When working with Nostr content, treat events, URLs, and profile metadata as untrusted
input. Follow the validation and URL-sanitization patterns in
docs/nostr.md, and do not use any in TypeScript.
LAYER.systems is dedicated to the public domain. You are free to copy, modify, distribute, and use it for any purpose, commercial or non-commercial.