Pulse · Windows + Android Windows v0.6.5 · Android v0.6.6

Local-first AI workspace.
One app, every device.

Pulse is a local-first AI workspace that ships as one product on two surfaces: a Tauri v2 side panel for Windows that talks to a local Ollama instance, and a greenfield markdown editor for Android with [[wikilink]] backlinks, voice input, and an in-app update checker. Both are Apache 2.0. Both run on-device. Both ship free.

  • 2 surfaces
  • 1.29 MB Android APK
  • ~6.4 MB Windows installer
  • 0 cloud, telemetry, accounts
Pick your device

One product. Two platforms. Same Pulse.

Both surfaces share the Smart Engine v3 router, the local-first data model, and the Apache 2.0 license. They differ in input modality and platform idioms — a tray icon and hotkey on Windows, a bottom toolbar and share intent on Android.

Pulse for Windows

A side panel that talks to local Ollama.

Tauri v2 tray app on Windows 10/11. NSIS or MSI installer. Prompts, screenshots, and voice stay on the device. The model is yours to choose (Llama 3, Qwen 2.5, Mistral, Gemma 2, Phi-3, DeepSeek).

  • v0.6.5NSIS · MSI
  • ~6.4 MBper installer
  • Apache 2.0no telemetry
Pulse for Android

A greenfield markdown editor, on the phone.

Svelte 5 + TypeScript strict + CodeMirror 6 with [[wikilink]] backlinks, tag autocomplete, voice input, and an in-app update checker. Notes live in a local SQLite database, FTS5 search on the same file.

  • v0.6.61.29 MB APK
  • SHA-256AD6E3302…45BAB5
  • Apache 2.0304/304 vitest

Full release notes live on /changelog/ · pricing on /pricing/ · side-by-side matrix on /compare/

Why Pulse

Three things. No roadmap.

Pulse does three things and does them on device — on Windows and on Android — with no account, no telemetry, and no network round-trip you did not trigger yourself.

Local-first

Your data never leaves the device.

On Windows, Pulse talks to a local Ollama instance on 127.0.0.1:11434. On Android, Pulse Notes stores everything in a local SQLite database with FTS5 search on the same file. The recall step is the same local model that runs chat. Nothing crosses the network boundary.

  • No accounts. No signup. No cloud.
  • Opt-in E2E sync planned for v0.7 — disabled by default.
  • The notes.db file is plain SQLite.
Smart

Smart Engine v3 routes the right model for the query.

v3 prefers the right model for the query 32 percentage points more often than the v2 baseline, and answers land in roughly a seventh of the time. v0.6.0 ships with v3 as the default, threshold 5, on both surfaces. The harness logs every call to data/smart-engine-v3-ab-*.jsonl for inspection.

  • Pass-rate +32 pp vs v2 baseline (88% absolute).
  • p50 latency −1370 ms vs v2 baseline.
  • Threshold 5, default ON on both surfaces.
Open

Apache 2.0 across both surfaces.

Read the code, fork the build, ship a competing product. The same Apache 2.0 license covers the Windows desktop Tauri build, the Android Capacitor 8 + Svelte 5 build, and this site. No "Pro" tier, no "Enterprise" SKU, no premium model hidden behind a paywall.

  • 1.29 MB Android APK, versionCode 16.
  • ~6.4 MB Windows NSIS installer.
  • 0 emoji, dark only, no marketing copy.
What is new in v0.6.x

Six Android releases and the v0.6.5 Windows build.

v0.6.0 was the greenfield Android rewrite. v0.6.1 brought the app icon and splash. v0.6.2 shipped the new onboarding. v0.6.3 revived the in-app UpdateChecker. v0.6.4 added the manifest URL fallback chain. v0.6.5 grew the chain to 7 hosts and shipped the v0.6.5 Windows desktop build. v0.6.6 closes the Android P1 audit: backup rules, voice input, and Settings view.

  1. latest android

    v0.6.6 — P1 trio: backup rules, voice input, Settings view

    The Android P1 audit (Roman, 2026-08-02) closes on three fronts. Backup rules now exclude app_webview/ from both cloud backup and device transfer. Voice input (SpeechRecognition) is the 8th tool in the NotesView toolbar. The Settings view (Profile, Theme, About, Actions) opens from a gear button in NotesView. 304/304 vitest, 1.29 MB APK, SHA-256 AD6E3302…45BAB5.

    • Backup rules: android:allowBackup="false" for the WebView path; android:dataExtractionRules excludes app_webview/ from both cloud-backup and device-transfer.
    • Voice input: webkitSpeechRecognition + Android SpeechRecognizer (Capacitor 8 plugin). 3-state visual (idle / listening / finalizing). Locale auto-detect; falls back to en-US.
    • Settings view: 4 sections — Profile, Theme, About, Actions. All read from the local store, zero network calls.
    • 302/302 → 304/304 vitest. versionCode 15 → 16. APK 1.35 → 1.29 MB.
    • SHA-256 AD6E3302…45BAB5. R93b release.keystore (CN=Pulse, O=Lesside, L=Brest, ST=Brest, C=BY). v1 disabled in R95a; v0.6.6 builds on the same v2+v3 path.
  2. windows

    v0.6.5 — Windows desktop build + manifest chain grown to 7

    R100 shipped the v0.6.5 Windows desktop build (Tauri v2, NSIS + MSI, ~6.4 MB installer). On the Android side, R93 grew DEFAULT_MANIFEST_URLS from 5 to 7 entries. R92 and R90 are added at the head, so v0.6.5+ devices can auto-update forward even if the older hosts go down. v0.6.3 and v0.6.4 users need to side-load v0.6.5 once.

    • Windows: Tauri 2 NSIS + MSI installer. x86_64, release profile. R8 / cargo-tauri 2.11.4. Smart Engine v3 on by default.
    • Android DEFAULT_MANIFEST_URLS: 5 → 7 entries. New order: R92 → R90 → R88 → R87 → R85 → R81 → R78.
    • New /release-notes-v0.6.5/ page with 4-step side-load instructions and full SHA-256.
    • 276/276 vitest (+24 for v0.6.5 path: chain head assertions, APP_VERSION bump, dedup + HTTPS guards).
    • KNOWN LIMITATION: v0.6.3 / v0.6.4 APKs are locked to chains that do not include R92 / R90.
  3. v0.6.4 — manifest URL fallback chain (Android)

    UpdateChecker now tries a chain of 5 known manifest hosts instead of a single baked-in URL. Closes the chicken-and-egg loop where every website_deploy rotation orphaned the previous APK's poll target. versionCode 13 → 14. APK +408 B. v0.6.3 users cannot auto-update — see the v0.6.4 side-load page.

    • 5-host chain in DEFAULT_MANIFEST_URLS (most-recent first), env override at head.
    • fetchManifestFromChain try-each-URL with attempts[] log.
    • UpdateResult.manifestUrl diagnostic field for triage.
    • 252/252 vitest (16 new for chain + helper parity).
    • versionCode 13 → 14. APK 4.34 → 4.35 MB.
  4. v0.6.3 — In-app UpdateChecker revival (Android)

    R52's in-app UpdateChecker was lost in R73 mavis-trash and the R77 greenfield reset. v0.6.3 brings it back. Polls a remote manifest, surfaces an M3 dialog with force-update support, SHA-256 fingerprint, release-notes link, and a 24h cache TTL. versionCode 12 → 13. APK +1.1 KB.

    • UpdateChecker core + UpdateCheckerMount.svelte + UpdateDialog.svelte (M3, 0 emoji).
    • Soft + force update modes, 24h cache, @capacitor/browser for APK installs.
    • SHA-256 verification against latest_apk_sha256 in the manifest.
    • 184/184 → 236/236 vitest (52 new for the chain + helpers).
    • versionCode 12 → 13. APK 4.34 → 4.34 MB.
  5. v0.6.2 — Onboarding v2 + 184/184 vitest

    Four onboarding screens replace the single splash: Welcome, Capture, Smart Engine, Local-first. M3 components only — no emoji, no celebratory copy, no marketing banner. The 184 vitest cases cover the new onboarding flow, the editor, the search, and the capture intent. versionCode 11 → 12. APK +5 KB.

    • 4 screens (Welcome / Capture / SmartEngine / LocalFirst), M3 only.
    • 0 emoji, no marketing copy, dark theme only.
    • 184/184 vitest (was 150/150 in v0.6.0 — +34 cases for onboarding + capture + search).
    • versionCode 11 → 12. APK 4.34 → 4.34 MB.
  6. v0.6.1 — Adaptive app icon + M3 splash

    Tokyo Night adaptive icon (blue P + 4-point spark) with monochrome variant for Android 13+ themed icons. M3 splash screen replaces the white flash on cold start. versionCode 10 → 11. APK +12 KB.

    • Adaptive icon foreground: P (#7aa2f7) + 4-point spark (#bb9af7) on Tokyo Night bg.
    • Monochrome variant for Android 13+ themed icons.
    • AppTheme.NoActionBarLaunch now uses Theme.SplashScreen — no white flash.
    • versionCode 10 → 11. APK +12 KB.
  7. v0.6.0 — GREENFIELD Android release

    Written from scratch on Svelte 5 + TS strict + Vite. CodeMirror 6 with split-pane (bottom-sheet on phone), [[wikilink]] backlinks, tag autocomplete, M3 toolbar, 9 Capacitor plugins. 150/150 vitest, 4.32 MB APK, versionCode 10, appId app.pulse.notes, minSdk 24, targetSdk 36. Smart Engine v3 default ON, threshold 5.

    • Svelte 5 + TS strict + Vite + vitest + jsdom — not a port of v0.5.x desktop.
    • CodeMirror 6 with Lezer highlighting, line numbers, smart indent.
    • Split-pane editor + preview with drag-resize; bottom-sheet on phone.
    • [[wikilink]] backlinks with fuzzy autocomplete.
    • #tag autocomplete ranked by usage frequency.
    • M3 toolbar with 7 formatting actions.
    • 9 Capacitor plugins wired in.
    • 4.32 MB APK, 849 KB JS bundle (306 KB gzipped).
v0.6.6 Android · v0.6.5 Windows

Get Pulse.

Free, forever. Apache 2.0. No account, no cloud, no telemetry.

Full changelog → · Compare → · Privacy →