Skip to content

Knotwork

GitHub alexeyw/knotwork

Install Knotwork

Download Zapstore

Download
QR code for zapstore.dev/download
  • Scan the code with your phone’s camera
  • Tap Download anyway if the browser warns about the file
  • Allow your browser to install unknown apps if Android asks
  • Open Zapstore and finish the onboarding

Open Knotwork in Zapstore

Open
QR code to open Knotwork in Zapstore
  • Scan the code to open Knotwork in Zapstore, or search for it there
  • Tap Install, and Download if Zapstore asks you to confirm the developer
  • Confirm in Android’s install dialog. Allow Zapstore to install unknown apps if Android asks

Unclaimed app

The catalog lists Knotwork from GitHub alexeyw/knotwork and signs its releases. The developer has not claimed it. The file is still checked before you install it.

Are you the developer? Cryptographically prove you hold the key that signs it.

How trust works

AI agent that runs its model on the phone. You build behavior using a drag-and-drop editor with typed nodes for input, LLMs, tools, and routing. Sensitive actions stop for confirmation before executing.

Knotwork is an AI agent that runs its model on the phone. Instead of a prompt box wired to somebody's API, every conversation runs through a pipeline you can open and edit: a graph of typed nodes - input, on-device LLM, optional cloud LLM, tool call, routing, decomposition, evaluation, clarification, output. When a step wants to do something destructive or sensitive, it stops and asks you first - including in the background, where the confirmation arrives as a notification.

WHAT IT DOES

  • Runs on your device. On-device inference through LiteRT-LM, with optional GPU acceleration; CPU-only works, just slower. Cloud providers (OpenAI, Anthropic, Google Gemini, DeepSeek, OpenRouter, Groq) and a server you run (Ollama or any OpenAI-compatible one) are optional and use your own key.
  • You build the behaviour. A drag-and-drop editor with pan and pinch-zoom, snap-to-grid, auto-layout, inline validation and a run-trace overlay, across 14 node types. Prompt variables such as $DATE, $TIME, $TOOLS, $MODEL and $MEMORY_SUMMARY render fresh on every run.
  • Tools, gated by you. Built-in tools and external servers through the Model Context Protocol (MCP). By default every sensitive or destructive call stops for explicit confirmation, enforced where the tool executes, not merely suggested to the model.
  • Reaches you from outside the app. A share target, launcher shortcuts and a Quick Settings tile run your chosen pipeline over shared text or images. Triggers (time, charging, Wi-Fi, network) fire a pipeline on their own and report back. Every entry surface stays inert until you bind a pipeline to it.
  • Remembers what matters. Long-term memory with semantic retrieval over past conversations, automatic fact extraction, search and export.

WHO IT IS FOR

It is for the person who already runs Tasker, Obsidian, Home Assistant or a local model on their own hardware, and who wants to know exactly what their agent does with their data.

PRIVACY

There is no account, no sign-in and no server of mine. Inference runs on the phone, so a normal conversation never leaves it. Data goes out only along paths the privacy policy lists, each off until you switch it on - except the built-in Wikipedia lookup, on by default. Usage statistics stay on the device and are never transmitted; a build-time check fails the build if any network dependency reaches that code. The database - chats, memory, run traces - is SQLCipher-encrypted, and API keys are sealed under an Android Keystore key. Crash reporting is opt-in, off by default, and absent entirely from the FOSS build.

KNOWN LIMITATIONS

This is a pre-release. The public surface, the settings layout and the on-device storage formats can still change between versions.

  • English interface only.
  • Android 14+ and about 2 GB of free RAM - the memory is the real constraint.
  • On some phones the screen freezes while the model runs on the GPU; switch it to CPU.
  • Shared pipeline files are not a compatibility contract before 1.0. Keep the original.
  • Background runs need the battery setting on Unrestricted. Without it Android reclaims the process in about ten seconds - the platform's rule, not a bug, but until you grant it background pipelines will not run.
  • Cloud failure behaviour differs by provider: detection of a stream that dies mid-answer is enabled only where it was measured.
  • Other apps' AppFunctions are out of reach - Android keeps the permission to call one for system apps. The local catalogue is what ships, plus whatever you connect over MCP.
  • One maintainer, no company behind it.

Open source under the Apache License 2.0; source, documentation and an FAQ are on the developer website.

Summary generated by Zapstore from source.

Original description, as the developer published it.

Zap Knotwork

Zapping anonymously. Sign in to zap with your identity.

No developer has verified this app yet, so sats go to npub1gnwq4…thdn3y, the catalog that brought it to you.

Amount in sats

Latest release

Nov 9, 2026

Unclaimed app No Google servicesSource available · Apache-2.0

The catalog lists this app from GitHub alexeyw/knotwork and signs its releases. The developer has not claimed it. Are you the developer? Claim your app

Location access is used to read the Wi-Fi network name. The microphone records audio for voice input.

Permissions

Coarse locationFine locationNotificationsMicrophone What they allow
  • Coarse location ACCESS_COARSE_LOCATION See your approximate location ACCESS_COARSE_LOCATION
  • Fine location ACCESS_FINE_LOCATION See your precise location ACCESS_FINE_LOCATION
  • Notifications POST_NOTIFICATIONS Send you notifications
  • Microphone RECORD_AUDIO Record audio RECORD_AUDIO

Release notes

Russian and Spanish, a newer on-device engine, and text that no longer freezes the screen.

Upgrading from 0.13.0 is an ordinary in-place update within the same signer: a GitHub release or the F-Droid copy over a GitHub or F-Droid install, or Google Play over Google Play.

Russian and Spanish

Every screen, the bundled pipelines and prompt templates, the FAQ and the troubleshooting guide are translated into both. The Spanish is neutral, for Spain and Latin America alike. Settings → About → Language picks the language, or follows the phone's. What a model reads stays in English: system prompts, tool descriptions and tool results.

LiteRT-LM 0.19.0

The on-device engine moves from 0.17.1 to 0.19.0. Its GPU sampling for a given seed now matches the CPU's, so a run on the GPU can give a different answer than it did before. Verify checks a run only on the engine version that recorded it: for a run recorded before this update it stays off and names both versions.

MCP

  • The ⋮ menu on a server's row turns all of its tools on or off at once.
  • A tool call to a server that closed its session now goes through: the app opens a new session and repeats the call once. It used to fail until the app was restarted.
  • Refreshing a server on the Tools screen asks the server.

Chat export

Save to file writes a chat where you choose. Export chat now shares a JSON file, so a chat of any length can be shared; one over about 350 000 characters used to close the app.

Fixed

  • Very long text without spaces no longer freezes the screen, and very tall text no longer closes the app.
  • Table cells show all their text.
  • The approval card shows the arguments exactly as the call receives them.
  • Large fonts no longer break words or cut labels on the settings, performance, Live metrics and Memory screens.

Which file to download

  • knotwork-0.14.0-full-release.apk — the standard build. This is the one to take unless you have a reason not to.
  • knotwork-0.14.0-foss-release.apk — no crash reporting and no analytics.
  • knotwork-0.14.0-full-release.aab — for the store pipeline, not for sideloading.

Verifying what you downloaded

SHA256SUMS.txt covers all three files. The APKs are signed with:

C=CL, CN=Aleksei Volodin
SHA-256: e50c8aa47c38c808e449c87dbcd4ab9d0d810bcd8ca9d33fd0ce83d492c81651

Check it with apksigner verify --print-certs <file>.apk. A build signed by C=US, O=Android, CN=Android Debug did not come from this release. The key is unchanged from 0.13.0, so this installs in place over a copy from a GitHub release.

Pre-release

This is still a pre-release. Storage formats, the pipeline JSON schema, the Kotlin public surface and the settings layout can change between minor versions without a migration path. Two deliberate exceptions: the external-automation contract's action, keys, statuses and refusal reasons stay frozen, and every backup format version stays readable.

Full details, including everything not summarised here: CHANGELOG at this tag.

Comments

Loading comments…

See more

Get Knotwork the private way

Updates checked on your device, and every release verified before it installs.

Get Zapstore for Android

  1. Tap Download APK below.Scan the code with your Android phone’s camera.
  2. If Android asks, allow your browser to install unknown apps.
  3. Open Zapstore and finish the onboarding.
Download APK

v2.0.4 · 71.2 MB · Android 10+

Verify the download

On a computer, run shasum -a 256 <the file you downloaded>. It should print: b13e01319fecf0b3ba1fd60132758bd0fa08a235836c52d44fddb412cf1b7137

If you have zsp, Zapstore’s publishing tool, zsp utils extract-apk <the file you downloaded> works too. Its hash should be the same SHA-256: b13e01319fecf0b3ba1fd60132758bd0fa08a235836c52d44fddb412cf1b7137

On the phone, AppVerifier should show this signing certificate: 99e33b0c2d07e75fcd9df7e40e886646ff667e3aa6648e1a1160b036cf2b9320

Source code All releases and notes

Get zsp

  1. Download the file for your computer.
  2. Make it executable and put it on your PATH.
  3. In your project folder, run zsp.

Have Go? This does the same:

go install github.com/zapstore/zsp/v2/cmd/zsp@latest
macOS, Apple silicon Linux, x86-64 Linux, arm64

v2.0.1 · macOS and Linux

Verify the download

On your computer, run shasum -a 256 <the file you downloaded>. It should print the SHA-256 for the one you chose.

macOS, Apple silicon · 18.6 MB 99018fb9744e5ace2b44557550dc333496239912c0e9b1137266d4922c803346

Linux, x86-64 · 23.8 MB 1ef5373f8ecd9ba63d2c3fab98abb0d31b2244a2aac31b3749fb205c7d5f5b38

Linux, arm64 · 22.1 MB e421005ee47cba58293dce4277bb784e4cfe706dbbcb8617d671629d0238be18

Source code All releases and notes