Dulus
선택한 모델로 데스크톱·터미널에서 동작하는 AI 에이전트, 모델은 Fuel에 호스팅되고 $DULUS로 결제
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Genesis is a runtime where existing websites can be displayed and interacted with through a native app-like interface (for android), with a harness to customise those apps as per you needs.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Genesis is an Android app that runs user-built applets. An applet is a native-feeling React UI over one or more live website sessions: each context is a WebView that loads the real website and keeps its history, an adapter in the page publishes what the page shows as keyed records and actions, and the applet owns the screens, data and rules. Pages the applet does not customize, sign-in, cookies and protected flows stay with the website, which appears in place in the same session when needed.
There are two kinds of work:
| Layer | Owns | Start here |
|---|---|---|
| Genesis platform | The Android shell, the Rust host, the shared packages, build tooling and builder guidance | AGENTS.md |
| Applets | Website adapters, screens, application rules, stored data and optional backends | factory/AGENTS.md, factory README, getting started |
An applet author uses the public SDK and their own code, and does not need to learn the host implementation.
| Path | Contents |
|---|---|
android/app/ | Java shell: activity, launcher, context WebViews, website bar, native Genesis menu, service HTTPS client |
android/native/ | Rust host genesis-host: applets, contexts, documents, RPC, storage, services, compatibility, imports (libgenesis_host.so) |
crates/contracts/ | genesis-contracts: shell events and commands, document messages, bundle types, limits, error codes |
packages/core/ | @genesis/core: manifest validation, route matching, presentation coordinator, compatibility table, protocol types, bundle format, error codes |
packages/sdk/ | @genesis/sdk: bridge, foreground runtime, record store and React hooks, adapter runtime |
packages/applet-tools/ | genesis-applet CLI: create, check (including compatibility), build, device install, services, kit export |
tools/ | APK asset and native build pipeline, package index check, service helpers |
factory/ | Applet-builder instructions, guides, skills and templates |
applets/ | The applets directory: a separate repository (nirvanacp/applets) with the hn-bookmarks, x-bookmarks and gmail-only applets, their port registry and backend launcher. Not tracked here |
genesis.workspace.json | Where the workspace's parts live: the applets directory and the repository it is cloned from |
genesis.packages.json | Applets bundled into the APK, named by their directory in the applets directory |
Requirements: Node 24, Cargo 1.94.0 with cargo-ndk 4.1.2, the Android SDK with NDK 28.2.13676358 and ANDROID_HOME set, and OpenSSL for the example backends. tools/build.mjs checks these versions and names the install command for a missing one. From the repository root:
npm run workspace -- setup # clone the applets repository into the configured directory
npm install
npm run typecheck
npm run build
# Build the APK, including the native library and bundled applets, and install it.
android/gradlew -p android :app:installDebug
# Build an applet and install it on a connected device without reinstalling the APK.
node packages/applet-tools/src/cli.mjs check applets/x-bookmarks
node packages/applet-tools/src/cli.mjs build applets/x-bookmarks
node packages/applet-tools/src/cli.mjs dev install applets/x-bookmarks --device emulator-5554
dev install sends the last build, so run build first. Hacker News is bundled into the APK through genesis.packages.json; X is installed with dev install. Release builds refuse dev install: they bundle each applet's published release, and users add other applets with Add applet in the launcher's Genesis menu, from a public GitHub repository or a downloaded bundle file. Genesis reviews every build before installing it and offers updates from the same source. Publishing covers versions, tags and the CI workflows that publish a release.
An entry in genesis.packages.json can be an object, { "id": "hn-bookmarks", "drawer": true }, to give that bundled applet its own entry in the Android app drawer. The entry shows the applet's name over its accent color, with the icon its manifest names as shell.icon; an applet without an icon gets no entry. The entry appears once the applet is installed and runs on this device. Before shipping a build to a store, check that each icon is original artwork and that each name does not claim to be the website's own app.
The applets live in their own repository, outside this one's history. genesis.workspace.json says where:
{ "applets": { "directory": "applets", "repository": "[email protected]:nirvanacp/applets.git" } }
directory is relative to the repository root or absolute. Name each applet's directory after its applet id, a short product name such as hn-bookmarks rather than a website domain, since one applet can span several websites. The root installs every applet's dependencies through the npm workspace applets/*, so all of them share one node_modules and one React. npm run workspace -- <command> keeps the checkout in line with the config:
| Command | What it does |
|---|---|
path | Prints the applets directory |
setup | Clones repository into directory when it is missing, then runs sync |
sync | When directory is not applets, links applets/ to it; when it is outside the repository, also links its node_modules to the root install |
check | Fails with the repairing command when the checkout differs from the config. npm run check:packages runs it too |
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗