Native macOS Discord bot dashboard built with SwiftUI
SwiftBot is under active development.
Features, UI, and configuration may change frequently as the app evolves. Occasional breakage between releases is expected while core systems are refined and stabilized.
SwiftBot installs are distributed through GitHub Releases.
- Download the latest release from GitHub Releases.
- Open the
.zip. - Move
SwiftBot.appto/Applications. - Launch SwiftBot and complete onboarding.
Future updates are handled in-app through Sparkle auto-updates.
SwiftBot requires a Discord application with a bot user.
-
Go to the Discord Developer Portal
https://discord.com/developers/applications -
Click New Application
-
Give the application a name (for example
SwiftBot) -
Open the Bot section
-
Click Add Bot
-
Enable the required Privileged Gateway Intents:
- Server Members Intent
- Message Content Intent
-
Copy the Bot Token
You will paste this token into SwiftBot during the onboarding process.
After the token is validated, SwiftBot will automatically generate the correct server invite link for your bot.
Invite the bot to your server using that generated link, then complete onboarding.
- Native Discord Gateway and REST runtime
- Guided onboarding with token validation and invite link generation
- Prefix and slash command support
- Command logging and channel configuration tools
- Voice event automation rules
- Member join welcome flows
- Message trigger rules
- Per-guild notification templates and voice activity logging
- Apple Intelligence support
- Ollama local model support
- OpenAI integration
- Configurable AI routing for supported reply flows
- WikiBridge source management
- Dynamic wiki-backed commands
- Game metadata and reference query surfaces
- Patchy monitoring for AMD, NVIDIA, Intel, and Steam updates
- Scheduled checks, delivery targets, and test sends
- SwiftMesh primary and fail-over clustering
- Conversation and wiki-cache replication
- Persistent local settings and cached Discord metadata
- Gateway, REST, latency, rate-limit, permissions, and intents visibility
- On-demand connection testing and runtime health checks
| Area | Purpose |
|---|---|
| Overview | High-level bot status, activity, and summary information |
| Voice / Actions | Automation rule builder for voice, message, and member-join flows |
| Commands / Command Log | Command controls and recent command activity |
| WikiBridge | External knowledge source management and dynamic command configuration |
| Patchy | Driver and platform update monitoring |
| AI Bots | Apple Intelligence, Ollama, and OpenAI configuration |
| Diagnostics | Connection health, API checks, and remediation visibility |
| SwiftMesh | Cluster topology, fail-over state, and mesh diagnostics |
| Logs / Settings | Token management, runtime logs, and app configuration |
SwiftBot supports both prefix commands and slash commands. The prefix is configurable in Settings, and WikiBridge can add commands from enabled sources.
helppingroll8ballpolluserinfo
setchannelignorechannelnotifystatusdebugbugreportweekly
imageimagine
metawiki
cluster
Additional slash commands include compare, logabug, and featurerequest.
SwiftBot stores application data in ~/Library/Application Support/SwiftBot/.
Common files include:
settings.jsonrules.jsondiscord-cache.jsonmesh-cursors.json
Bot tokens are stored securely in macOS Keychain.
SwiftBotApp/- main macOS application, SwiftUI interface, Discord runtime, diagnostics, and SwiftMeshSources/UpdateEngine/- reusable update-checking engine used by PatchyTools/SparklePublisher/- Sparkle publishing helperTests/SwiftBotTests/- application test suitedocs/- GitHub Pages site, release notes, and Sparkle appcastsnotes/- internal planning, design, and review docs
- GitHub Releases for installers and release notes
- Stable appcast
- Beta appcast
Sparkle uses the published appcasts to deliver automatic updates after installation.
- Create a focused branch for each change.
- Keep updates small, clear, and easy to review.
- Include test notes and screenshots for behavior or UI changes.
- Open a pull request with a concise summary of what changed.
