A multi-agent coding assistant built with Swift and Zig
Plue is a native macOS application that provides an intelligent coding assistant interface with multiple interaction modes. It combines a modern Swift UI with high-performance Zig backend libraries to deliver a responsive and powerful development tool.
Note: This project currently only builds on macOS due to its native macOS UI components and frameworks.
- 🎯 Vim-style Prompt Interface - Efficient text input with vim keybindings
- 💬 Modern Chat Interface - Conversational AI interaction
- 🖥️ Terminal Integration - Built-in terminal functionality
- 🌐 Farcaster Integration - Social coding features
- 🔧 Agent Workflows - Git worktree management and Dagger container integration
- ⚡ High Performance - Zig backend for optimal performance
- 📂 Command Line Interface - Open Plue from terminal like VSCode (
plue /path/to/project
) - 🍎 Native macOS - Built specifically for macOS with native frameworks
Plue uses a hybrid architecture:
- Swift Frontend - Native macOS UI using SwiftUI, providing smooth user experience
- Zig Backend - High-performance core libraries written in Zig for:
- Business logic and state management
- Farcaster protocol implementation
- Core processing logic
- Unified Build System - Zig build system orchestrates both Zig and Swift compilation
Plue uses the Zig build system as the primary build orchestrator, which wraps and manages both:
- Zig library compilation
- Swift Package Manager (SPM) for the Swift application
The build process:
- Stage 1: Build Zig libraries
- Stage 2: Build Swift application using SPM, linking against Zig libraries
- macOS 13.0+ (Ventura or later)
- Zig 0.14.1 (or later)
- Swift 5.8+ (included with Xcode)
Download and install Zig from https://ziglang.org/download/
macOS (using Homebrew):
brew install zig
git clone <repository-url>
cd plue
# Build the complete project
zig build
# Run the app
zig build run
# Or run the Swift executable directly
.build/release/plue
Install the plue
command globally for VSCode-like CLI usage:
# Install the CLI command globally
./scripts/install.sh
# Now you can use plue from anywhere
plue # Open in current directory
plue ~/my-project # Open in specific directory
plue . # Open in current directory (explicit)
Example CLI usage:
cd ~/code/my-awesome-project
plue # Opens Plue in this directory
# Or open directly in any project
plue ~/code/another-project
# Build the complete project (Zig libraries + Swift application)
zig build
# Build and run the application
zig build run
# Run tests
zig build test
Command | Description |
---|---|
zig build |
Build complete project (Zig + Swift) |
zig build run |
Build and run the application |
zig build test |
Run unit tests |
plue/
├── Sources/plue/ # Swift application source
│ ├── App.swift # Main application entry
│ ├── ContentView.swift # Primary UI view
│ ├── VimPromptView.swift # Vim-style interface
│ ├── ModernChatView.swift # Chat interface
│ ├── TerminalView.swift # Terminal component
│ └── ...
├── src/ # Zig backend libraries
│ ├── libplue.zig # Core Swift interop library
│ ├── farcaster.zig # Farcaster protocol implementation
│ └── ...
├── build.zig # Zig build configuration
├── Package.swift # Swift package configuration
└── .github/workflows/ # CI/CD configuration
Required tools:
- Xcode - For Swift compiler and macOS SDKs
- Zig - Zig compiler and build system (0.14.1 or later)
- macOS Frameworks - Foundation, AppKit, WebKit, Security (included with Xcode)
# Build complete project
zig build
# Run the application
zig build run
# Run tests
zig build test
If you need to build components separately:
# Build Zig libraries only
zig build-lib -dynamic -OReleaseFast src/libplue.zig -femit-bin=zig-out/lib/libplue.dylib
# Build Swift application
swift build --configuration release -Xlinker -Lzig-out/lib
- Clone the repository and ensure you have Zig and Xcode installed
- Make your changes to Swift or Zig code
- Test your changes:
zig build test
- Build and verify:
zig build run
- Submit a pull request
The project uses GitHub Actions for:
- Automated builds on every push and PR
- Test execution to ensure code quality
- Dependency updates via Dependabot
[Add your license here]
[Add support information here]