chore: bootstrap pnpm monorepo workspace

Initial workspace for hermes-mobile, a Capacitor 8 Android port of
hermes-desktop that runs hermes-agent on the device.

- pnpm workspaces with apps/* and packages/* layouts
- exact-version pinning via .npmrc save-exact=true (mirrors the
  hermes-agent-style dependency hygiene that tightened after the
  Mini Shai-Hulud worm hit mistralai 2.4.6 on PyPI; prevents
  quarantined releases breaking fresh installs)
- .gitignore covers node_modules, dist, android/.gradle, *.jks
  keystores, Python artifacts, and the review/ vendored checkouts
  (kept local-only, not in version control)

Scripts declared at the root:
  pnpm vendor:renderer   # rsync desktop renderer into packages/renderer
  pnpm build             # build:ipc + build:renderer + build:mobile
  pnpm dev:mobile        # vite dev server (browser-only, no native)
  pnpm cap:sync          # cap sync android
  pnpm android:run       # install debug APK to attached device
This commit is contained in:
Claude
2026-06-03 22:02:21 -04:00
commit 5ed7657da8
5 changed files with 4158 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
# Project metadata
.claude/
CLAUDE.md
review/
# Dependencies
node_modules/
.pnpm-store/
# Build artifacts
dist/
build/
out/
*.tsbuildinfo
# Capacitor / Android
apps/mobile/android/.gradle/
apps/mobile/android/.idea/
apps/mobile/android/local.properties
apps/mobile/android/app/build/
apps/mobile/android/captures/
apps/mobile/android/app/release/
apps/mobile/android/app/debug/
apps/mobile/android/*.iml
apps/mobile/android/.cxx/
# iOS (not used in v1, scaffolded for future)
apps/mobile/ios/Pods/
apps/mobile/ios/build/
# Generated renderer
packages/renderer/dist/
# Keystore and signing material
*.jks
*.keystore
keystore.properties
android-runner/app/release.keystore
# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# OS files
.DS_Store
Thumbs.db
# Editor
.vscode/*
!.vscode/extensions.json
.idea/
# Env
.env
.env.local
.env.*.local
# Python artifacts (vendored hermes-agent install)
__pycache__/
*.pyc
.pytest_cache/
.venv/
venv/
# Sensitive
.sentryclirc
+5
View File
@@ -0,0 +1,5 @@
# Pin exact versions for hermes-agent-style dependency hygiene (issue #367 — Mini Shai-Hulud)
save-exact=true
strict-peer-dependencies=false
auto-install-peers=true
shamefully-hoist=false
+29
View File
@@ -0,0 +1,29 @@
{
"name": "hermes-mobile",
"version": "0.1.0",
"private": true,
"description": "Android port of hermes-desktop — runs hermes-agent on-device via Capacitor + the desktop's React renderer.",
"license": "MIT",
"engines": {
"node": ">=20",
"pnpm": ">=9"
},
"scripts": {
"vendor:renderer": "bash apps/mobile/scripts/vendor-renderer.sh",
"build:ipc": "pnpm --filter @hermes/ipc build",
"build:renderer": "pnpm --filter @hermes/renderer build",
"build:mobile": "pnpm --filter @hermes-mobile/app build",
"build": "pnpm run build:ipc && pnpm run build:renderer && pnpm run build:mobile",
"dev:mobile": "pnpm --filter @hermes-mobile/app dev",
"cap:sync": "pnpm --filter @hermes-mobile/app cap sync android",
"cap:open": "pnpm --filter @hermes-mobile/app cap open android",
"android:assemble": "cd apps/mobile/android && ./gradlew assembleDebug",
"android:run": "cd apps/mobile/android && ./gradlew installDebug",
"typecheck": "pnpm -r run typecheck",
"clean": "pnpm -r exec rm -rf dist node_modules/.cache"
},
"devDependencies": {
"i18next": "^25.6.0",
"typescript": "^5.9.3"
}
}
+4053
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -0,0 +1,3 @@
packages:
- "apps/*"
- "packages/*"