Skip to content

Add Mobile App and Kai Todo skill packs#401

Closed
robdtaylor wants to merge 2 commits into
danielmiessler:mainfrom
robdtaylor:add-mobile-kai-todo-skills
Closed

Add Mobile App and Kai Todo skill packs#401
robdtaylor wants to merge 2 commits into
danielmiessler:mainfrom
robdtaylor:add-mobile-kai-todo-skills

Conversation

@robdtaylor

@robdtaylor robdtaylor commented Jan 13, 2026

Copy link
Copy Markdown

Overview

Submitting two skill packs for Personal AI Infrastructure:

  1. Mobile App Skill - Unified mobile interface for Claude Code with terminal emulation and observability
  2. Kai Todo Skill - Task queue manager with autonomous processing

My Use Case

My use case is rather specific. I run PAI on my mac at home, but the business I manage (A privately owned multi national business) has not approved Claude for enterprise use. I recognise the power of both Claude code and the fantastic work by Daniel and Community on PAI. I therefore needed a solution to use next gen KAI assistant remotely on my iPhone. I was frustrated jumping from an ssh session to an obsidian vault and wanted an integrated solution with everything in one app. I am an avid self hoster / home labber who has dabbled with software development many years ago (VB 6 and a little python!) Kai Mobile app is accessed over my Tailscale instance, and has so far proven to be a powerful enabler for me. Additionally to maximise usage I created the KAI todo skill to defer tasks to times when usage is available. This is my solution to my specific problem. I Hope it may be of use to the PAI community. Open to feedback. Opus and PAI developed this for me. This is my very first PR to another open source repo. Let me know if I have screwed anything up. Thanks all, I watch this repo daily for inspiration.

Mobile App Skill Features

Core Capabilities

  • Real-Time Chat: WebSocket streaming for live Claude Code responses
  • File System Browser: Full home directory access with inline previews (text, code, images, PDFs)
  • Knowledge Base: Obsidian vault viewer with automatic wiki-link resolution
  • Terminal Emulation: Execute bash commands remotely from mobile device
  • Todo Management: View and manage Kai's task queue from mobile
  • Observability Dashboard: Real-time monitoring of multi-agent Claude Code sessions

Technical Stack

  • Server: Bun + TypeScript (port 5050)
  • Client: Vue.js + Tailwind CSS Progressive Web App
  • Communication: REST API + WebSocket for real-time features
  • Service Management: Launchd auto-restart on crash/reboot (macOS)
  • Platform: PWA installable on iPhone/iPad home screen

Key Innovations

  • Agent Observability: Swim lane visualization of parallel agent execution, event filtering, live charts
  • Terminal Access: Remote command execution with streaming output with persistence over tmux.
  • Wiki-Link Resolution: Automatic [[link]] to URL conversion for Obsidian notes
  • Session Persistence: Chat history stored as JSON files
  • Pull-to-Refresh: Mobile-native interactions
  • Auto-Restart: Resilient service management via launchd

Kai Todo Skill Features

Core Capabilities

  • Priority-Based Queuing: High/medium/low priority with automatic inference
  • Natural Language: Parse commands like "add urgent task" → high priority
  • Automatic IDs: Sequential KT-XXX format
  • Background Processing: Autonomous task execution at intervals
  • Skill Association: Link tasks to relevant PAI skills for context loading
  • Markdown Storage: Human-readable format in Obsidian vault

Commands

  • /kai-todo add <topic> - Add new task
  • /kai-todo list - Show all queued tasks
  • /kai-todo next - Process highest priority task
  • /kai-todo done <id> - Mark complete
  • /kai-todo remove <id> - Delete task

Testing

Both skills have been:

  • ✅ Tested on macOS 14.x (Apple Silicon)
  • ✅ Installed via INSTALL.md procedures
  • ✅ Verified using VERIFY.md checklists
  • ✅ Used in production environment

Test Plan

  • Mobile App installs successfully via INSTALL.md
  • Mobile App VERIFY.md checklist passes
  • Server starts and listens on port 5050
  • PWA accessible from iPhone/iPad via Tailscale
  • Chat streaming works with Claude Code
  • File browser displays and previews files
  • Obsidian vault loads with wiki-links resolved
  • Terminal emulation executes commands
  • Observability dashboard displays agent activity
  • Launchd service auto-restarts on crash
  • Kai Todo installs successfully via INSTALL.md
  • Kai Todo VERIFY.md checklist passes
  • Can add tasks with priority detection
  • Can list queued tasks
  • Can process tasks with /kai-todo next
  • Can mark tasks complete
  • Background processor executes tasks
  • No hardcoded credentials in source code
  • All paths use environment variables
  • Clean of build artifacts (no node_modules, dist, logs)

Security & Privacy

  • ✅ No hardcoded credentials or API keys
  • ✅ No personal data in source code
  • ✅ All paths use environment variables (process.env.HOME, OBSIDIAN_VAULT_PATH)
  • ✅ Clean of build artifacts (no node_modules, dist, logs)
  • ✅ .gitignore files exclude generated content

Documentation Quality

Both packs include comprehensive documentation:

README.md

  • Problem statement and solution architecture
  • Complete feature list with examples
  • API endpoint documentation (Mobile App)
  • Command reference (Kai Todo)
  • Integration points with other PAI components

INSTALL.md

  • AI-assisted installation (5-phase guided process)
  • Manual installation instructions
  • System analysis and prerequisite checks
  • Step-by-step verification
  • Comprehensive troubleshooting section

VERIFY.md

  • File verification checklist
  • Service/functional testing procedures
  • Automated verification scripts
  • Expected results and pass criteria
  • Troubleshooting for failed checks

Technical Details

Mobile App: 660KB (source only, dependencies installed via bun install)
Kai Todo: 68KB (minimal, single TypeScript file + documentation)

Both skills follow PAI v2.1.0 directory-based pack format.

🤖 Generated with Claude Code

Mobile App Skill:
- Unified mobile interface for Claude Code, file browsing, and Obsidian vault
- PWA with real-time chat streaming via WebSocket
- File system browser with inline previews and search
- Obsidian vault viewer with wiki-link resolution
- Bun + TypeScript server (port 5050)
- Vue.js + Tailwind CSS Progressive Web App client
- Launchd auto-restart service for macOS
- Comprehensive installation and verification documentation

Kai Todo Skill:
- Task queue manager with priority-based processing
- Markdown storage in Obsidian vault (~/.../Kai-Todo.md)
- Automatic ID generation (KT-XXX format)
- Priority inference from natural language
- Background processor for autonomous task execution
- Skill association for context loading
- Natural language command parsing

Both skills tested on macOS 14+ (Apple Silicon)
No hardcoded credentials or personal data
Environment variables used for user-specific paths
@robdtaylor
robdtaylor marked this pull request as ready for review January 13, 2026 21:01
The observability dashboard was failing because it proxied to a separate
AgentObservability server on port 4000 that users wouldn't have installed.

This change integrates the file-based event ingestion directly into the
mobile app server, reading hook events from ~/.claude/history/raw-outputs/
without requiring an external dependency.

Changes:
- Add services/observability.ts with file watching and event streaming
- Update index.ts to use local observability instead of proxying to port 4000

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@robdtaylor

Copy link
Copy Markdown
Author

Fix for Observability Dashboard

Thanks for the feedback! I've pushed a fix that makes the observability dashboard self-contained.

What was wrong

The observability dashboard was proxying WebSocket connections to localhost:4000, expecting a separate AgentObservability server to be running. Users installing just the mobile app skill wouldn't have this server.

What I fixed

  • Added services/observability.ts that reads hook events directly from ~/.claude/history/raw-outputs/
  • Modified the server to handle observability streaming locally instead of proxying to port 4000

How to test

  1. Pull the latest changes
  2. Rebuild the server: cd src/apps/server && bun build --target=bun --outdir=./dist ./src/index.ts
  3. Restart the mobile app service
  4. The observability tab should now connect and display events when Claude Code is active

The dashboard will show real-time events from Claude Code sessions (tool usage, session starts, etc.) as they happen.

@robdtaylor robdtaylor closed this by deleting the head repository Jan 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant