Blog ·

Building the LiPet Plugin Foundation: Declarative Skills, Cloud Delivery, and Zero-Update Extensibility

LiPet Engineering Team · Safafish

Today we hit a major milestone on the LiPet workbench: the complete foundation of our skill and plugin system is now in place. From the start, we didn’t want LiPet to be a static virtual pet locked into whatever hardcoded behaviors shipped inside the binary. But we also refused to compromise macOS system stability, battery life, or user privacy by loading arbitrary, unchecked executable scripts.

1. The Problem with Traditional Desktop Companion Plugins

When developers build plugin architectures for desktop assistants, they almost always reach for one of two extremes:

  • The Hardcoded Trap: Every new integration (weather, pomodoro timers, token balances) requires writing native Swift/Rust code, cutting a new DMG release, and forcing users through an entire application update cycle.
  • The Unsafe Scripting Trap: Allowing plugins to execute arbitrary JavaScript, Python, or WebViews on your Mac. This invariably leads to memory bloat, high background battery drain, and glaring security vulnerabilities.

For LiPet, we took a third path: declarative data packets coupled with a hardened, native runtime pipeline.

2. Declarative Skills as Lightweight Data Packets

In LiPet, a "skill" is not an executable program. It is a strictly validated, declarative data packet. A skill package contains:

  • Manifest & Metadata: Stable identifier, human-readable name, icon badge asset, and category.
  • Query & Command Specifications: Declarative descriptions of external endpoints (e.g. how to fetch current weather, or how to query quota balances).
  • Presentation Schemas: Structured UI templates for rendering gauge rings, headline bubbles, and timeline cards.
  • Permission Envelope: Explicit declarations of required network domains, refresh intervals, and notification intents.

Because skills are pure structured data, our official cloud repository can deliver new skills and updates to your Mac instantly. When we publish a new provider integration or improve a weather parser, your desktop pet learns it immediately — without requiring an App Store or DMG update.

3. AI Quota Gauges & Visual Balance Rings

One of the primary built-in skill categories we’re shipping is AI subscription and quota monitoring. Many developers and writers rely on API access across OpenAI, Anthropic Claude, Google Gemini, and local Ollama instances.

Rather than forcing you to open separate browser tabs and dashboards to check remaining credits or rate limits, LiPet renders unified visual gauge rings. You can see remaining tokens and reset windows at a glance on the pet’s companion cards.

4. The Permission Model & Security Whitelist

Security in LiPet is non-negotiable. When installing any skill from the in-app collection browser:

  • Explicit Upfront Confirmation: You see the exact network endpoints the skill contacts and how often it refreshes.
  • Privileged Operations Whitelist: Skills cannot spawn shell processes, inspect filesystem paths outside their isolated container, or read private keychain items without explicit OS-level approval.
  • Zero Ambient Telemetry: Your API keys and usage statistics are stored locally on your machine, never sent to Safafish analytics servers.

5. Bringing Skills to Life: Touch Mapping & External Triggers

Where LiPet truly shines is connecting these data skills to the physical presence of your desktop companion:

  • Body Touch Mapping: In the Pet Center, you can divide the cat’s body into trigger zones (e.g. tapping the head triggers the weather skill, double-tapping the belly queries AI token quotas).
  • Environmental Weather Events: When the weather plugin detects rain in your city, it feeds an external trigger into the L0 behavior engine — and your cat pauses on screen to shake water droplets from its fur. In freezing temperatures, it curls into a ball and shivers lightly.

6. What’s Next on the Workbench

With the plugin foundation and touch mapping completed, our focus over the coming weeks turns to:

  • Fine-tuning sprite animation frame playback and multi-speed pacing transitions.
  • Calibrating the 250ms gesture arbitration timing across varying trackpad and mouse polling rates.
  • Rolling out the first round of pre-release preview builds to early testers.

Stay tuned for more engineering updates as we bring LiPet to life!