Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

@enc-protocol/app-store

App store for Android APKs and Chrome extensions on Cloudflare Workers. Ed25519 auth — only you can publish.

Live: https://app-store.ocrybit.workers.dev

Install

npm install @enc-protocol/app-store --registry https://npm-registry.ocrybit.workers.dev

CLI

# Publish an APK
npx enc-app-store publish ./app.apk \
  --id com.enc.myapp --name "My App" --version 1.0.0 \
  --author enc-protocol --description "An awesome app"
 
# Publish a Chrome extension
npx enc-app-store publish ./extension.zip \
  --id com.enc.myext --name "My Extension" --version 1.0.0 \
  --platform chrome
 
# List all apps
npx enc-app-store list
 
# Remove an app
npx enc-app-store unpublish com.enc.myapp
 
# Remove a specific version
npx enc-app-store unpublish com.enc.myapp --version 1.0.0

Platform is auto-detected from file extension (.apk → android, .zip/.crx → chrome).

Auth key defaults to keys/org.key — use --key <path> to override.

SDK

import { publish, signToken, listApps, getApp, unpublish } from '@enc-protocol/app-store'
 
const token = await signToken(privateKeyHex)
 
await publish('./app.apk', token, {
  id: 'com.enc.myapp',
  name: 'My App',
  version: '1.0.0',
})
 
const apps = await listApps()

Server Setup

npm run keygen       # generate Ed25519 keypair
npm run dev          # start on http://localhost:8788

Add the generated public key to .dev.vars:

ORG_PUBLIC_KEY=<hex from keygen output>

API

MethodPathAuthDescription
GET/Web UI home (grouped by platform)
GET/app/:idApp detail page
GET/search?q=Search apps
GET/api/appsList all apps (JSON)
GET/api/apps/:idApp metadata
GET/api/apps/:id/versions/:versionVersion metadata
GET/api/apps/:id/downloadDownload latest binary
GET/api/apps/:id/download/:versionDownload specific version
PUT/api/appsYesPublish app
DELETE/api/apps/:idYesRemove app
DELETE/api/apps/:id/versions/:versionYesRemove version

Storage

  • KV (META): app metadata (JSON listings)
  • R2 (APKS): binary files — APKs and extension ZIPs (no size limit)