Skip to content

Repository files navigation

⚡ Simpleton

A fast, native macOS terminal — tabs, splits, SSH, and bring-your-own AI, built in Swift.

CI Release Platform Swift License: MIT Status: alpha


Simpleton terminal demo

Simpleton is a from-scratch, native AppKit + SwiftUI terminal for macOS. It pairs a GPU-friendly SwiftTerm core with native window tabbing, recursive split panes, first-class SSH, and pluggable AI integrations — with none of the Electron weight.

⚠️ Alpha software. Simpleton is under active development at version 0.1.1. Expect rough edges and breaking changes. See Project status before you rely on it.

✨ Features

🖥️ Native terminal SwiftTerm-backed emulator with true-color, mouse reporting, and a configurable scrollback buffer.
🗂️ Tabs & splits Native macOS window tabbing plus arbitrarily nested split panes (split right / split down, focus by direction, zoom a pane).
🔐 SSH built in Connection bookmarks with frecency ranking, one-click ~/.ssh/config import, keepalive, and auto-reconnect.
🧭 Connection sidebar Pinned + recent connections, live search, and SSH-config hosts — one click to connect in the active tab.
🤖 AI integrations Bring your own provider — Claude, OpenAI, OpenRouter, Groq, Together, Mistral, DeepSeek, or local Ollama — with live model selection, per-tab chat, skills, and MCP tools, gated by a command classifier.
🧩 Panels Dockable side panels: command history, environment, processes, Docker, notes, SSH tunnels, and more.
🎨 Native theming Dark / Light / Auto appearance that follows macOS, plus a macOS-integrated accent color picker (Match System + the eight system accents) applied across the whole UI.
🔌 Plugins A plugin manager with lifecycle events and user scripts (script plugins + HTML side panels).
⚙️ Deep preferences General, Appearance, Terminal, SSH, Keys, Plugins, AI, Skills, and Profiles — in a resizable window.
🔄 Auto-update Sparkle-based update channel (disabled in dev builds).

🤖 AI integrations

Simpleton is provider-agnostic — bring your own key, or run fully local. Choose a provider and model right in Preferences → AI, with the model list fetched live from the provider:

Provider Notes
Anthropic (Claude)
OpenAI (GPT)
OpenRouter hundreds of models behind one key
Groq very fast inference
Together AI · Mistral · DeepSeek
Ollama fully local — nothing leaves your machine
Custom any OpenAI-compatible endpoint

Keys are stored in the macOS Keychain, and a command classifier gates destructive actions the assistant proposes.

🔎 A closer look

AI Assistant panel
AI integrations — connect any provider (Claude, OpenAI, OpenRouter, Groq, Ollama, …) with live model selection. A per-tab assistant with Watch and Autopilot modes, gated by a classifier that blocks destructive actions.
Named tabs
Tabs & splits — native window tabbing (name tabs per session) with arbitrarily nested split panes.
Skills preferences
Skills — a catalog of reusable, parameterized actions (built-in and your own) the AI assistant can run on request.
Appearance preferences — Dark/Light/Auto and accent color
Native theming — Dark / Light / Auto appearance and a macOS-integrated accent-color picker (Match System + the eight system accents), applied across the whole UI. Preferences is a resizable window covering General, Appearance, Terminal, SSH, Keys, Plugins, AI, Skills, and Profiles.

🚀 Getting started

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.9+ / Xcode 15+ (to build from source)

Install a release

  1. Download the latest Simpleton-*.zip from the Releases page.

  2. Unzip and drag Simpleton.app to /Applications.

  3. Alpha builds are ad-hoc signed (not notarized), so the first launch needs a nudge past Gatekeeper:

    xattr -dr com.apple.quarantine /Applications/Simpleton.app

    …or right-click the app → OpenOpen.

Build from source

git clone https://github.com/bbjansen/simpleton.git
cd simpleton

# Build and run the app directly
swift run Simpleton

# …or produce a launchable, self-contained .app bundle
bash scripts/e2e/make-app-bundle.sh release
open .build/Simpleton.app

Dev signing (optional). Running the bundle repeatedly can trigger Keychain prompts because the code signature changes each build. Create a stable local identity once and sign after each build:

bash scripts/dev/make-dev-cert.sh   # one time: creates a "Simpleton Dev" self-signed identity
swift build && bash scripts/dev/sign-dev.sh

🧪 Testing

Simpleton ships a dependency-free test runner (CoreChecks) so the core logic can be verified without Xcode or a GUI — ideal for CI:

swift run CoreChecks

It exercises config, session state, split-tree, SSH-config parsing, bookmarks, frecency, fuzzy matching, the command classifier, and more (250+ checks). CI runs it on every push and pull request.

🏗️ Architecture

Simpleton is a Swift Package with a clean split between reusable logic and the AppKit shell:

Sources/
├── SimpletonCore/     # Pure, testable logic — models, stores, parsers (no AppKit)
└── Simpleton/         # AppKit + SwiftUI app — windows, panes, panels, AI, preferences
Tests/
└── CoreChecks/        # No-Xcode test runner over SimpletonCore
scripts/
├── dev/               # Local dev-signing helpers
└── e2e/               # App-bundle assembly + accessibility-driven UI smoke tests

Keeping the domain logic in SimpletonCore (free of UI frameworks) is what makes the headless CoreChecks runner — and fast CI — possible.

⚙️ Configuration

Settings live at ~/Library/Application Support/Simpleton/config.json and are editable from the in-app Preferences window (⌘,). Connection bookmarks and plugins live alongside it.

🗺️ Roadmap

  • Re-enable session restore behind a non-blocking prompt
  • Custom, user-editable key bindings
  • Notarized, signed release builds
  • Profiles per connection (theme, shell, environment)
  • Richer AI tool/skill catalog

🧭 Project status

Simpleton is alpha. The core terminal, tabs, splits, SSH, panels, and preferences are usable day-to-day, but APIs, config schema, and UI are still moving. Session restore is temporarily disabled while it is reworked. Feedback and issues are very welcome.

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md for the dev setup, branch/commit conventions, and how to run the checks before opening a pull request.

📄 License

Released under the MIT License.

🙏 Acknowledgements

About

A fast, native macOS terminal — tabs, splits, SSH, and an AI copilot, built in Swift.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages