Skip to content

vernonstinebaker/NullClawUI

Repository files navigation

NullClawUI

A native iOS client for NullClaw AI Gateways.


Requirements

iOS / iPadOS 26.0+
Xcode 26+
Swift 6 (strict concurrency)

Screenshots

Servers Dashboard Chat
Servers Dashboard Chat
Server Settings Cron Jobs
Server Settings Cron Jobs
MCP Servers
MCP Servers

Features

  • Multi-gateway chat — connect to multiple NullClaw Gateways; switch instantly with the title-bar picker
  • Real-time streaming — SSE-based streaming with exponential back-off reconnect
  • Conversation history — searchable list of past conversations with expand/collapse; tap to resume
  • Secure pairing — Bearer tokens stored in the system Keychain, keyed per gateway
  • Cron Jobs — view, create, pause, resume, run, and delete scheduled jobs
  • MCP Servers — view registered servers with live health status (auto-checked on load), add new servers
  • Channels — view connection status of configured communication channels
  • Agent Configuration — adjust model, temperature, system prompt, and limits
  • Autonomy & Safety — set autonomy level and safety controls
  • Multi-modal input — attach images and documents when the gateway supports it
  • Health monitoring — per-gateway online/offline status with resource counts on the server card
  • Cost & Usagehidden pending REST API endpoint (code preserved)

Gateway REST API Dependencies

NullClawUI communicates with the gateway via two protocols:

  1. A2A protocol (JSON-RPC over HTTP/SSE) for chat and task management
  2. Gateway REST API (/api/*) for management features

Several REST endpoints used by this app have not yet been merged into the NullClaw core. Features that depend on unmerged endpoints may return errors or show placeholder data. Key endpoints in use:

Endpoint Purpose Status
GET /api/cron List cron jobs Pending merge
POST /api/cron Create cron job Pending merge
GET /api/mcp List MCP servers Pending merge
GET /api/mcp/:name MCP server status Pending merge
GET /api/channels List channels Pending merge
GET /api/capabilities Gateway capabilities Pending merge
GET /api/config/* Read/write config Pending merge
GET /api/doctor Health diagnostics Pending merge

Additional endpoints need to be implemented to enable features like adding/configuring channels directly from the app.


Project Structure

NullClawUI/
├── App/              # @main entry, AppModel, DesignTokens, GatewayStore
├── Views/            # SwiftUI screens (ChatView, ServersView, etc.)
├── ViewModels/       # @Observable view models
├── Networking/       # GatewayClient (URLSession, SSE, JSON-RPC)
├── Security/         # KeychainService
├── Models/           # Codable types (AgentCard, ConversationRecord, REST API models)
└── Resources/        # Assets.xcassets, Info.plist
NullClawUITests/      # Unit tests
NullClawUIUITests/    # UI tests

Getting Started

Prerequisites

  1. Xcode 26+
  2. A running NullClaw Gateway instance (default: http://localhost:5111)
  3. xcodegen — run brew install xcodegen
  4. SwiftLintbrew install swiftlint
  5. SwiftFormatbrew install swiftformat

Build & Run

git clone <repo-url> && cd NullClawUI

# Regenerate the Xcode project (needed after any source file changes)
xcodegen generate

# Open in Xcode
open NullClawUI.xcodeproj

Set your development team in Signing & Capabilities before building.

Run Tests

xcodebuild test \
  -scheme NullClawUI \
  -destination 'platform=iOS Simulator,name=iPhone 17'

Lint & Format

swiftlint --strict
swiftformat --lint .

Architecture

Layer Technology
State management @Observable macro (Swift 6)
Navigation NavigationStack with programmatic NavigationPath
Networking URLSession + async/await; AsyncSequence for SSE
Persistence SwiftData (ConversationRecord, GatewayProfile)
Credentials System Keychain (Security framework)
Markdown AttributedString (native)
Code generation xcodegen (project.yml)

All UI mutations are @MainActor-isolated. No DispatchQueue usage.


Security

Bearer tokens are stored exclusively in the system Keychain, keyed by the normalized gateway URL. No tokens are written to UserDefaults, disk files, or iCloud.


Contributing

See CONTRIBUTING.md for guidelines.


License

MIT — see LICENSE.

About

Native iOS/iPadOS A2A chat client for NullClaw AI Gateway

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages