A fast, themeable system info tool built with Go and Bubbletea.
Single-run output (prints once, exits cleanly) — An alternative to neofetch/fastfetch.
Landing page · Docs · Quickstart · Themes
# Default theme
bf# Switch themes instantly
bf --theme dracula
# Export as image
bf -o bubblefetch.svg
# Fetch Solana token data
bf --sol DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263Copy, paste, done. No configuration needed to get gorgeous themed output.
- Why Bubblefetch?
- What's New in v0.3.1
- Features
- Installation
- Quick Start
- Common Setups
- Usage
- Themes
- Outputs
- Privacy & Safety
- Troubleshooting
- Command-Line Reference
- Contributing
- License
Bubblefetch brings modern features to the fetch tool space:
| Feature | Bubblefetch | fastfetch | neofetch |
|---|---|---|---|
| Speed | ~1.3ms median | ~10ms | ~130ms |
| Plugin System | ✅ Go plugins + external scripts | ❌ | ❌ |
| Image Exports | ✅ PNG, SVG, HTML | ❌ | ❌ |
| Interactive Config | ✅ TUI wizard | ❌ | ❌ |
| SSH Remote Mode | ✅ Full support | ❌ | |
| Domain Scan | ✅ WHOIS + DNS | ❌ | ❌ |
| Solana Token Info | ✅ Real-time data | ❌ | ❌ |
| Per-Module Timing | ✅ costs module |
❌ | ❌ |
| Export Formats | JSON, YAML, text, PNG, SVG, HTML | JSON, text | ❌ |
| Themes | 8 built-in, easy custom | Custom | Custom |
Performance methodology: ~1.3ms median collection time on local system (excluding network calls) measured via --benchmark flag over 100 iterations.
Fetch and display Solana token data with real-time pricing and 24h charts.
bf --sol DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263Features from v0.3.0
Create custom modules with Go plugins or external scripts.
echo '{"label":"Weather","value":"72°F","icon":""}' > plugin.shExport as PNG, SVG, or HTML with full theme support.
bf -o bubblefetch.svgView SVG example → · View PNG →
Interactive TUI setup with theme preview and module selection.
bf --config-wizardSee wizard screenshot → (Manual: Take screenshot)
Optional public IP display (privacy-first, disabled by default).
# Enable in config
enable_public_ip: true
modules:
- publicipSee docs/CHANGELOG.md for complete details.
- ⚡ Blazing Fast: ~1.3ms median collection time - 100x faster than neofetch, 10x faster than fastfetch
- Styled Output: Themed, framed terminal output with Nerd Font icons
- OS Detection: Automatically detects your OS/distro and displays appropriate ASCII art
- Comprehensive Info: CPU, GPU, memory, disk, network, battery, local IP, and more
- Themeable: 8 built-in themes with easy custom theme creation
- 🔌 Plugin System: Extend with custom modules using Go plugins (.so files)
- 🧩 External Modules: Drop executable scripts in
plugins/external/ - 🧙 Interactive Config Wizard: Guided setup with theme preview and module selection
- 🖼️ Image Export: Export as PNG (raster), SVG (vector), or HTML (webpage)
- 🌐 Public IP Detection: Optional public IP display (privacy-first, disabled by default)
- 🌍 SSH Remote Support: Fetch system info from remote systems via SSH
- 🔎 Domain Scan: WHOIS + DNS lookup via
--who - 🪙 Solana Token Info: Fetch token data by contract address via
--sol - 📤 Export Modes: Export to JSON, YAML, or plain text
- 📊 Benchmark Mode: Measure collection performance (text or JSON output)
- 📈 Module Cost: Visualize per-module timing with the
costsmodule - ⚙️ Highly Customizable: YAML config, custom themes, modular system info display
- Start here: docs/README.md
- Quick setup: docs/QUICKSTART.md
- Examples: docs/EXAMPLES.md
- Plugins: docs/PLUGINS.md
- Exports schema: docs/EXPORTS.md
- Remote mode: docs/REMOTE.md
- Performance: docs/PERFORMANCE.md
yay -S bubblefetch-gitAUR package: https://aur.archlinux.org/packages/bubblefetch-git
Installs the bf alias alongside bubblefetch.
git clone https://github.com/howieduhzit/bubblefetch.git
cd bubblefetch
./install.shThis script:
- Builds the optimized binary
- Installs to
/usr/local/bin - Creates
~/.config/bubblefetch - Copies themes + example config
Manual install
git clone https://github.com/howieduhzit/bubblefetch.git
cd bubblefetch
go build -ldflags="-s -w" -o bubblefetch ./cmd/bubblefetch
sudo mv bubblefetch /usr/local/bin/Go install
go install github.com/howieduhzit/bubblefetch/cmd/bubblefetch@latestNew to bubblefetch? Get started in 60 seconds:
# 1. Install bubblefetch
git clone https://github.com/howieduhzit/bubblefetch.git
cd bubblefetch
./install.sh
# 2. Run the interactive setup wizard
bubblefetch --config-wizard
# 3. Run bubblefetch!
bf
# 4. Try different themes
bf --theme dracula
bf --theme nord
# 5. Export your setup
bf -o my-setup.pngThat's it! See docs/QUICKSTART.md for more detailed guidance.
Ready-to-run recipes for popular use cases:
Clean output, fast, low overhead.
# config.yaml
theme: minimal
modules:
- os
- kernel
- uptime
- cpu
- memory
- batterybfFull specs, colorful theme, export-ready.
# config.yaml
theme: dracula
modules:
- os
- kernel
- host
- cpu
- gpu
- memory
- disk
- network
- localipbf -o ~/stream-assets/sysinfo.pngNo shell pipelines, read-only commands.
bf --remote production-server --remote-safe --export json > audit.jsonTest themes quickly, enable timing.
# config.yaml
modules:
- os
- kernel
- cpu
- memory
- costs # Shows per-module timingbf --theme my-custom-theme# Run with default settings
bubblefetch
# Short alias
bf
# Use a specific theme
bubblefetch --theme dracula
# Use custom config file
bubblefetch --config ~/.config/bubblefetch/custom.yamlTip: Use a Nerd Font in your terminal to see module icons. Note: bubblefetch prints once and exits (no interactive TUI).
# Fetch info from remote system via SSH
bubblefetch --remote user@hostname
# Uses your SSH config and keys automatically
bubblefetch --remote myserver
# Read-only safe mode (no shell pipelines)
bubblefetch --remote myserver --remote-safebf --who google.com
bf --who google.com -R # Include raw WHOIS# Fetch token data by contract address
bf --sol EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
# Short form
bf -s EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
# With theme
bf --sol EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --theme dracula
# Export as JSON
bf --sol EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --export jsonFor tokens launched via Bags.fm, get additional data including:
- Creator Info: Who deployed the token (username + platform)
- Launch Date: When the token was created
- Total Fees: Lifetime fees collected by the token
Setup (Optional)
- Get your free API key at dev.bags.fm
- Add to your config:
# ~/.config/bubblefetch/config.yaml
bags_api_key: "your-api-key-here"Note: Bags.fm data only appears for tokens launched through their platform. All other tokens still work with DexScreener data.
# Export as JSON
bubblefetch --export json > system.json
# Export as YAML
bubblefetch --export yaml > system.yaml
# Export as plain text
bubblefetch --export text > system.txt
# Compact JSON (no pretty print)
bubblefetch --export json --pretty=false# Run 10 iterations and show performance stats
bubblefetch --benchmark
# JSON benchmark output
bubblefetch --benchmark --format jsonFirst time setup? Run the interactive wizard:
bubblefetch --config-wizardThe wizard will guide you through:
- Theme selection (preview all 8 built-in themes)
- Module selection (choose which info to display)
- Privacy settings (enable/disable public IP detection)
- Plugin directory configuration
Configuration is saved to ~/.config/bubblefetch/config.yaml
Create custom modules with either external scripts or Go plugins.
External modules (recommended):
mkdir -p ~/.config/bubblefetch/plugins/external
cat > ~/.config/bubblefetch/plugins/external/weather.sh <<'EOF'
#!/usr/bin/env bash
echo '{"label":"Weather","value":"72°F","icon":""}'
EOF
chmod +x ~/.config/bubblefetch/plugins/external/weather.shAdd weather to your modules list.
Git context example (branch, dirty, ahead/behind, root):
mkdir -p ~/.config/bubblefetch/plugins/external
cp plugins/examples/external/git-context.sh ~/.config/bubblefetch/plugins/external/
chmod +x ~/.config/bubblefetch/plugins/external/git-context.shGo plugins (power users):
# Build example plugin
make plugin-hello
# Install to plugin directory
make install-plugins
# Add to config
modules:
- hello # Your custom plugin
- os
- cpuPlugin Development:
- See
docs/PLUGINS.mdfor complete guide - Examples in
plugins/examples/ - Platform support: Linux, macOS, FreeBSD (not Windows)
Quick example:
package main
import (
"github.com/howieduhzit/bubblefetch/internal/collectors"
"github.com/howieduhzit/bubblefetch/internal/ui/theme"
)
var ModuleName = "hello"
func Render(info *collectors.SystemInfo, styles theme.Styles) string {
return styles.Label.Render("Hello") +
styles.Separator.Render(": ") +
styles.Value.Render("World!")
}Bubblefetch includes 8 beautiful built-in themes. Switch instantly with --theme:
bf --theme defaultPreview
(Manual: Add screenshot)
Colors: Primary #89b4fa, Secondary #cba6f7, Accent #f38ba8 Border: Rounded Download theme file →
bf --theme draculaPreview
(Manual: Add screenshot)
Colors: Primary #bd93f9, Secondary #ff79c6, Accent #50fa7b Border: Double Download theme file →
bf --theme nordPreview
(Manual: Add screenshot)
Colors: Primary #88c0d0, Secondary #81a1c1, Accent #b48ead Border: Thick Download theme file →
bf --theme gruvboxPreview
(Manual: Add screenshot)
Colors: Primary #fabd2f, Secondary #fe8019, Accent #b8bb26 Border: Rounded Download theme file →
bf --theme tokyo-nightPreview
(Manual: Add screenshot)
Colors: Primary #7aa2f7, Secondary #bb9af7, Accent #9ece6a Border: Rounded Download theme file →
bf --theme solarized-darkPreview
(Manual: Add screenshot)
Colors: Primary #268bd2, Secondary #6c71c4, Accent #859900 Border: Normal Download theme file →
bf --theme monokaiPreview
(Manual: Add screenshot)
Colors: Primary #66d9ef, Secondary #f92672, Accent #a6e22e Border: Normal Download theme file →
bf --theme minimalCopy a theme file to ~/.config/bubblefetch/themes/mytheme.json:
{
"name": "mytheme",
"colors": {
"primary": "#89b4fa",
"secondary": "#cba6f7",
"accent": "#f38ba8",
"label": "#f9e2af",
"value": "#a6e3a1",
"border": "#585b70",
"background": "#1e1e2e"
},
"ascii": "auto",
"layout": {
"show_ascii": true,
"ascii_width": 30,
"separator": " ",
"padding": 2,
"border_style": "rounded"
}
}Then use it:
bf --theme mythemeShare your themes! Submit a PR to themes/ directory.
Bubblefetch can export your system info in multiple formats:
Perfect for sharing your setup on social media, creating wallpapers, or documentation.
bf --image-export png --image-output sysinfo.pngbf --image-export svg --image-output sysinfo.svgbf --image-export html --image-output sysinfo.htmlExport system info as structured data for scripting or monitoring:
# JSON (pretty)
bf --export json
# JSON (compact)
bf --export json --pretty=false
# YAML
bf --export yaml
# Plain text
bf --export textAll exports respect your configured modules and collect the same data as visual output.
Local only (default):
- OS/distro, kernel version
- Hostname
- CPU, GPU, memory, disk usage
- Active network interfaces
- Battery status (if applicable)
- Current shell, terminal emulator
Optional network features (disabled by default):
- Public IP detection (
enable_public_ip: true)- Tries api.ipify.org, icanhazip.com, ifconfig.me
- 2-second timeout
- Completely optional
- WHOIS/DNS lookup (
--who domain.com) - Solana token data (
--sol address) - SSH remote collection (
--remote user@host)
- No network calls by default
- No telemetry or analytics
- No data sent to external servers
- All data stays on your machine
# config.yaml
enable_public_ip: false # Default
# Don't add these modules
modules:
# - publicip # Leave this commentedOr use --remote-safe for SSH mode to disable shell pipelines.
When using --remote:
- Uses your existing SSH config
- Respects SSH key auth
- Safe mode (
--remote-safe) disables shell pipelines - Only collects system info (no destructive operations)
Recommendation: Always use --remote-safe on production systems.
Problem: Module icons appear as boxes or question marks.
Solution: Install a Nerd Font and configure your terminal to use it.
# 1. Install a Nerd Font (example: JetBrains Mono)
# Download from https://www.nerdfonts.com/
# 2. Configure terminal to use the font
# - Most terminals: Settings → Font → Select "JetBrains Mono Nerd Font"
# - Alacritty: Update ~/.config/alacritty/alacritty.yml
# - Kitty: Update ~/.config/kitty/kitty.conf
# 3. Test
bfRecommended fonts: JetBrains Mono Nerd Font, FiraCode Nerd Font, Hack Nerd Font
Status:
- Linux: ✅ Fully supported
- macOS:
⚠️ Core features work, plugins limited (no.sosupport) - FreeBSD: ✅ Supported
- Windows: ❌ Not supported (PRs welcome!)
macOS limitations:
- Go plugins (
.sofiles) don't work - External script plugins work fine
- All other features supported
Problem: --remote fails to connect.
Check:
-
Can you SSH manually?
ssh user@hostname
-
Is your SSH key added?
ssh-add -l
-
Is the remote host in
~/.ssh/known_hosts? -
Use
--remote-safeif you see permission errors.
Still stuck? Open an issue with your error message.
Problem: Custom plugin doesn't appear in output.
Checklist:
-
Is the plugin in the correct directory?
ls ~/.config/bubblefetch/plugins/external/ -
Is it executable?
chmod +x ~/.config/bubblefetch/plugins/external/myplugin.sh -
Does it output valid JSON?
~/.config/bubblefetch/plugins/external/myplugin.sh # Should output: {"label":"...","value":"..."}
-
Is it in your modules list?
# config.yaml modules: - myplugin # Must match filename (without extension)
See docs/PLUGINS.md for complete guide.
Problem: Bubblefetch seems slow.
Debug:
# Check per-module timing
bf # Add "costs" to your modules list
# Run benchmark
bf --benchmark
# Expected: ~1-2ms on modern hardwareCommon causes:
- Network-dependent modules (publicip, plugins that fetch data)
- Slow SSH connection (use
--remote-safe) - Many external plugins with timeouts
Solution: Disable slow modules or increase plugin timeout in config.
Available built-in modules:
os- Operating system namekernel- Kernel versionhost- Hostnameuptime- System uptimecpu- CPU modelgpu- GPU modelmemory- RAM usagedisk- Disk usageshell- Current shellterminal- Terminal emulatornetwork- Active network interfaceslocalip- Local IP addresspublicip- Public IP address (optional)battery- Battery status (laptops)costs- Per-module timing
Add custom modules via plugins!
# ~/.config/bubblefetch/config.yaml
theme: default
modules:
- os
- kernel
- cpu
- memory
- disk
- uptimeUsage: bubblefetch [OPTIONS]
Options:
-c, --config string Path to config file (default: ~/.config/bubblefetch/config.yaml)
-t, --theme string Theme name to use (overrides config)
-r, --remote string Remote system IP/hostname to fetch info from (via SSH)
-e, --export string Export format: json, yaml, or text
-p, --pretty Pretty print JSON output (default: true)
-b, --benchmark Run benchmark mode (10 iterations)
-f, --format string Benchmark output format: text or json
-w, --config-wizard Run interactive configuration wizard
--image-export string Export as image: png, svg, or html
-o, --image-output string Image output path (default: bubblefetch.{format})
-W, --who string Domain scan (WHOIS + DNS records)
-R, --who-raw Include raw WHOIS output
-s, --sol string Fetch Solana token data by contract address
--remote-safe Use read-only SSH commands (no shell pipelines)
-v, --version Print version information
-h, --help Show help message
Notes:
- If --image-export is omitted, the format is inferred from --image-output extension.
- Add "costs" to your modules list to display per-module timing.
Examples:
bubblefetch # Run with default config
bf # Short alias
bubblefetch --theme dracula # Use dracula theme
bf -t dracula # Short flags
bubblefetch --config-wizard # Interactive setup
bubblefetch --remote user@server # SSH to remote system
bf -r user@server # Short remote flag
bubblefetch --export json --pretty=false # Export compact JSON
bf -e json -p=false # Short export flags
bubblefetch --image-export png # Export as PNG
bf -o ~/Pictures/fetch.svg # Auto-detect SVG from extension
bubblefetch --who google.com # Domain WHOIS + DNS scan
bubblefetch --sol <contract_address> # Solana token info
bf -s EPjFWdd... # Short Solana flag
bubblefetch --benchmark # Performance test
Contributions welcome! We're especially looking for:
- Theme contributions: Share your custom themes
- Plugin examples: Show off creative plugins
- Documentation improvements: Help others get started
- Bug reports: Open an issue
- Feature requests: Tell us what you'd like to see
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
- Built with Bubbletea and Lipgloss
- Inspired by neofetch and fastfetch
- ASCII art detection from DistroWatch
Made with ❤️ by the Bubblefetch community


