Android · Bluetooth Mesh · Agent Infrastructure

Small, sharp software that does one thing properly.

I build apps and tools that replace bloated ones. An Android app that talks to a mesh bulb's radio with no network permission at all. A 2.5 MB bulb controller for the job a 500 MB vendor app does. A memory architecture for AI agents that trades context tokens for files on disk. Same instinct every time: cut the middle, keep the function.

2.5 MBaBulb download — vendor equivalent is ~500 MB
No network permissionaBulb and aPhoto ship with zero internet access
Dynmemagent memory: ~500 tokens in the prompt, the rest on disk
7 public projectsAndroid, Python, browser tooling
01

Projects

Every one of these exists because the alternative was worse.
aBulb running on a phone

aBulb

Android · Bluetooth Mesh

Control a Bluetooth-mesh bulb straight from the phone — no hub, no cloud, no account. The app joins the mesh as a proxy client and drives the standard Light Lightness model; it can provision a factory-fresh bulb on its own.

  • 2.5 MB to download, Android 8.0+
  • No network permission at all — nothing to phone home with
  • Pairs with real hardware, tested on a LEDVANCE Smart+ bulb
KotlinBluetooth SIG MeshGATT proxyno-cloud

aKlima

Android · IoT cloud

A lightweight replacement for the ConnectLife / Hisense app. Controls a split air conditioner through the same cloud the vendor app uses — without the vendor app.

  • Nine screens of settings reduced to one, plus a ⋯ sheet
  • ~10 MB installed, next to hundreds of megabytes for the official app
  • Two units on one account are one tap apart; no analytics, no third-party servers
KotlinComposeOAuthConnectLife cloud

aPhoto

Android · privacy

Show someone a photo without handing them your gallery. aPhoto displays the photos you picked and nothing else — no grid, no next folder, no way to scroll into anything you didn't choose.

  • Fingerprint or screen lock before the gallery opens
  • No storage, media or internet permission — nothing in the app talks to anything
  • Up to 20 photos, swipe and pinch-zoom, ~7.5 MB
KotlinComposeBiometricPromptzero permissions
Resident context cost benchmark chart
dm

Dynamic Memory

Dynmem · Python · AI agent infrastructure

Dynmem — a two-tier memory architecture for AI agents. A ~500-token index sits in the system prompt; the verbose detail lives in topic files on disk, routed by keyword.

  • Replaces a hard 2,200-character memory cap that silently truncates facts
  • Plugin-enforced integrity — the index can't drift from the files
  • Benchmarked honestly against stock memory, raw answers and failed runs published
Pythoncontext engineeringbenchmarksplugin hooks

Site Control

Chromium extension · agent bridge

A Manifest V3 extension whose side panel talks to a local agent: you type an instruction, the agent reads the page, acts on it and replies — all inside the browser you're already in.

  • Drives real pages from natural language, not a separate sandbox browser
  • Local WebSocket bridge to the agent, no third-party relay
  • Every action is visible in the side panel as it happens
Chrome MV3WebSocketPython agentCDP
ia

Archive Bulk Upload

Python · CLI

An interactive script for bulk-uploading collections to the Internet Archive, with a directory browser and a terminal UI that makes hundreds of files painless.

  • All dependencies bundled — clone it and run it
  • Guided directory browsing instead of hand-written metadata flags
  • Most-starred project here, used by people who found it on its own
PythonCLIInternet Archive API
av1

AV1-Everything

Python · video

Recursive folder-to-AV1 encoding on top of FFmpeg — point it at a tree of videos and walk away. A fork I extended for my own encoding runs.

  • Batch encodes whole directories with sane defaults
  • Built for long unattended runs
FFmpegAV1batch
02

How I build

The pattern behind the project list.
/ android

Native apps that stay small

Kotlin and Compose, sized against what the vendor app costs you in megabytes and permissions. If a feature needs a cloud, it should be a cloud the user already has.

/ radio

Protocols, not middlemen

Bluetooth LE and Bluetooth SIG Mesh at the GATT level: provisioning, proxy clients, vendor model quirks. The interesting bugs are always on the wire.

/ agents

AI-agent infrastructure

Memory architecture, context budgets, browser control and plugin-enforced invariants for agents that run unattended — plus benchmarks that survive scrutiny.

/ infra

Self-hosted, end to end

Linux servers, systemd units, Tailscale networks, containers and cron watchdogs. If it matters, it runs on hardware I control.

/ tooling

Automation with taste

Python for the things worth automating, terminal UIs for the things worth using twice, and no service dependency where a script will do.

03

About

I'm ockentap — a developer who builds for the gap between what software could be and what the vendor shipped.

The through-line across everything here is removing a layer that didn't need to exist: the hub between the phone and the bulb, the vendor app between you and your own air conditioner, the gallery between you and one photo, the 2,200-character cap between an agent and what it knows.

I'd rather ship something small that works on real hardware — a real bulb, a real air conditioner, a real server — than something large that works in a demo.