WhisperCode

repository·dev·Indexed 43 days ago

https://github.com/dngriffin/whispercode

A mobile port of the OpenCode AI coding agent for iOS and Android, allowing developers to interact with coding sessions via a web server. The ecosystem includes the opencode GitHub Action for automating issue explanations, bug fixes, and PR reviews using commands like /oc or /opencode, as well as a desktop application built with Tauri v2.

Tokens
269.8K
Snippets
897
Records
1.2K
Agent score
56%

What's inside WhisperCode

  1. Overview of WhisperCode features and privacy

    dev

    WhisperCode is an iOS and Android port of OpenCode designed to bring the full open-source AI coding agent experience to mobile devices.

    Key Features

    • WhisperKit speech-to-text: Enables voice input for hands-free coding.
    • Custom keyboard shortcuts: Adapted specifically for mobile use.
    • Mobile UI tweaks: Includes mobile-optimized elements like an always-visible search bar.
    • Push Notifications: Notifies you when a session requires attention.

    Privacy

    WhisperCode prioritizes privacy by design:

    • No collection, transmission, or storage of analytics, telemetry, or personal data.
    • No third-party tracking SDKs or crash reporting services.
    • No usage metrics.
    • Code and conversations remain strictly between your device and your development server.
  2. Overview of OpenCode Built-in Formatters

    dev
    OpenCode automatically formats files after they are written or edited using language-specific formatters. This ensures generated code follows your project's existing code styles. Many formatters are detected automatically if they are available in your environment or listed as dependencies in your project files (e.g., prettier in package.json or pint in composer.json).
  3. TUI Plugin API Overview

    dev

    The TUI (Terminal User Interface) plugin API is exposed via the tui(api, options, meta) function. It provides a comprehensive set of tools for developers to extend the host application by registering commands, routes, UI components (slots), keybinds, and managing state, themes, and lifecycle events.

    Core API Groups:

    • Commands: Register and trigger interactive commands.
    • Routes: Define and navigate between plugin-specific screens.
    • UI & Dialogs: Use built-in dialog components (DialogAlert, DialogConfirm, etc.), toasts, and slots.
    • Keybinds: Create and match custom keyboard shortcuts.
    • State & KV: Access shared application state and a non-namespaced Key-Value store.
    • Themes: Install, switch, and query visual themes.
    • Plugins: Manage the lifecycle (install, activate, deactivate) of other plugins.
    • Lifecycle: Handle plugin initialization and cleanup via signals and disposal handlers.
  4. Explore the OpenCode Ecosystem Add-ons

    dev

    The OpenCode ecosystem includes a variety of add-ons (Dodaci) designed to extend functionality, such as authentication, environment isolation, and tool integration. Key categories include:

    • Authentication & Cost Management: Use existing subscriptions instead of API credits with opencode-openai-codex-auth, opencode-gemini-auth, or opencode-antigravity-auth.
    • Environment & Sandbox: Isolate sessions using opencode-daytona (Daytona sandboxes) or opencode-devcontainers.
    • Tooling & Shell: Enhance terminal capabilities with opencode-pty (interactive PTY input for agents) or opencode-shell-strategy (non-interactive shell instructions).
    • Security & Privacy: Redact PII/secrets before LLM calls using opencode-vibeguard.
    • Workflow & Productivity: Automate tasks with opencode-scheduler, track usage with opencode-wakatime, or manage Git worktrees with opencode-worktree.
  5. Explore OpenCode Projects and Integrations

    dev

    Beyond plugins, the ecosystem features standalone projects and integrations built using the OpenCode SDK or API. Notable examples include:

    • Editor Integrations: opencode.nvim (Neovim plugin/frontend) and OpenChamber (VS Code extension).
    • Interface Clients: portal (mobile-first web UI), CodeNomad (multi-platform client), and OpenChamber (Web/Desktop app).
    • SDK Integrations: ai-sdk-provider-opencode-sdk (Vercel AI SDK provider).
    • Automation & Bots: kimaki (Discord bot for controlling sessions).
    • Knowledge Management: OpenCode-Obsidian (Obsidian plugin).

    If you want to add your own project to the ecosystem, you can submit a PR to the repository or check community aggregators like awesome-opencode and opencode.cafe.

  6. Explore the OpenCode Plugin Ecosystem

    dev

    The OpenCode ecosystem includes a variety of plugins designed to extend the capabilities of AI agents, improve developer workflows, and integrate with external services. Key categories of plugins include:

    • Authentication & Billing: Plugins like opencode-openai-codex-auth, opencode-gemini-auth, and opencode-antigravity-auth allow using existing subscriptions or free models instead of direct API billing.
    • Environment & Sandboxing: Tools such as opencode-daytona (Daytona sandboxes), opencode-devcontainers (devcontainer isolation), and opencode-worktree (git worktrees) provide isolated execution environments.
    • Tooling & Capabilities: Plugins like opencode-pty (interactive PTY processes), opencode-websearch-cited (web search), and opencode-firecrawl (web scraping) add new functional primitives to agents.
    • Workflow & Orchestration: Advanced systems like opencode-conductor (lifecycle automation), opencode-workspace (multi-agent orchestration), and subtask2 (command orchestration) manage complex agent tasks.
    • Developer Experience: Utilities such as opencode-notificator (desktop notifications), opencode-md-table-formatter (markdown cleanup), and opencode-type-inject (TypeScript/Svelte type injection) enhance the local development loop.
  7. OpenCode vs Claude Code

    dev

    OpenCode is an open-source AI coding agent similar in capability to Claude Code, but with several key distinctions:

    • 100% Open Source: Fully transparent and community-driven.
    • Provider-Agnostic: Not locked into a single provider. While OpenCode Zen is recommended, it supports Claude, OpenAI, Google, or local models.
    • LSP Support: Out-of-the-box Language Server Protocol support.
    • TUI Focus: Optimized for the terminal, built by Neovim users and the creators of terminal.shop.
    • Client/Server Architecture: Can run locally on your machine or be controlled remotely via a mobile app, with the TUI acting as one of many possible clients.
  8. Key differences between OpenCode and Claude Code

    dev

    OpenCode is an open-source AI Coding Agent with several architectural distinctions from Claude Code:

    • 100% Open Source: The entire project is open.
    • Provider-Agnostic: It is not tied to a specific model provider. While OpenCode Zen models are recommended, you can use Claude, OpenAI, Google, or local models.
    • Built-in LSP Support: Integrated Language Server Protocol support.
    • TUI Focused: Designed by Neovim enthusiasts and the creators of terminal.shop to push the limits of Terminal User Interfaces.
    • Client/Server Architecture: Supports a remote-driven model where a local server can be controlled by mobile devices or other clients.
  9. What is OpenCode Zen?

    dev
    OpenCode Zen is a curated AI gateway providing access to a list of tested and verified models specifically optimized for use as coding agents. It acts as a provider within the OpenCode ecosystem, ensuring that models are delivered with optimal configurations and performance by working directly with providers and benchmarking model/provider combinations.
  10. How SyncEvents and Bus events differ

    dev

    The system uses two distinct event models that are integrated to provide both event sourcing and backwards compatibility:

    | Feature | SyncEvent | Bus Event | | :--- | :--- | : | | Purpose | Event sourcing, recording, and replaying | Real-time messaging and UI updates | | Fields | type, id, seq, aggregateID, data | type, properties | | Execution | Triggered via SyncEvent.run() | Triggered via Bus.publish() | | Ordering | Total ordering via incrementing seq | N/A | | Usage | Used by projectors to mutate state | Used by consumers to react to changes |

    Integration: When SyncEvent.run() is called, the event is automatically re-published as a Bus event. The data field of the sync event is mapped to the properties field of the bus event.