Tinytosh

Meet Tinytosh: The ultimate open-source desktop companion that brings your workspace to life. Whether functioning as a standalone smart display or a real-time PC hardware monitor, it delivers critical data at a glance. Best of all, it relies on 100% free public APIs โ€” no API keys, no accounts, and no authorization required.

Available Screens & Services

  • ๐Ÿ•’ Internet Clock: Auto-syncs time and date based on your location.
  • ๐Ÿ“… Calendar: Displays the current date, monthly grid, and national holidays.
  • ๐ŸŒค๏ธ Weather Station: Live Temperature, Humidity, and Forecasts (via Open-Meteo).
  • ๐Ÿƒ Air Quality: Monitor local AQI levels (US & EU Standards).
  • ๐Ÿ“Š Stock Tracker: Track market data for ~100 top global assets, ETFs, and Mega-Cap Tech with daily trend indicators.
  • ๐Ÿ“ˆ Crypto Tracker: Watch your favorite coin (from top 75 global cryptos) with price and trend indicators.
  • ๐Ÿ’ฑ Currency Tracker: Track exchange rates for over 150 fiat currency pairs with custom scaling multipliers.
  • ๐Ÿ–ฅ๏ธ PC Hardware Monitor: Connects via USB or Wirelessly to your Windows/Mac/Linux computer to show CPU Load, RAM Usage, and Network Speeds in real-time!
  • ๐ŸŽต PC Media: Displays currently playing track, artist, album, and playback status from your connected computer.
  • ๐Ÿ–จ๏ธ Bambu 3D Printer: Local network telemetry for your Bambu Lab printer (progress, temperatures, fans, and print status).

Step 1: Hardware & Wiring

Components Required

  • ESP32-C3 SuperMini (Microcontroller)
  • 0.96" OLED Display (I2C 128x64)
  • Silicone Wires (30AWG recommended) or Jumper Wires
  • TTP223 Touch Sensor (Optional, for button)
ESP32-C3 SuperMini
ESP32-C3 SuperMini
Find Online
0.96 OLED
0.96" OLED I2C
Find Online
Wires
Silicone Wires
Find Online
TTP223
TTP223 (Optional)
Find Online

Wiring Notes:

  • For a Basic Setup (Screen only), standard female-female jumper wires work perfectly. Soldering is optional but recommended for a cleaner, more durable build.
  • For the Full Setup (Screen + Button), soldering is required to share the limited power pins and ensure a reliable connection.
Tinytosh Wiring Diagram
Component Pin Name ESP32 Connection Notes
OLED Display VCC 3.3V or 5V Power
GND G (GND) Ground
SCL GPIO 9 I2C Clock
SDA GPIO 8 I2C Data
Button (Optional) VCC 3.3V Do not use 5V for button
I/O (SIG) GPIO 10 Input Signal
GND G (GND) Use Y-splitter or solder to share ground

๐Ÿ› ๏ธ Assembly in 5 Steps

The 3D-printed case is designed for a tool-free, screwless assembly:

  1. Print the Case: It consists of two parts (Main Body & Cover) designed with precise rails for a secure snap-fit.
  2. Prepare Hardware: Solder or wire your components according to the table above.
  3. Slide in Display: Insert the OLED into the dedicated guide slot from the top. Internal stoppers ensure it sits perfectly level at the bottom.
  4. Insert Electronics: Place the microcontroller inside the case.
    Touch Button Tip: If installed, position the sensor against the top of the case. If your wires are rigid, it will naturally rest against the roof; otherwise, use a drop of glue or a piece of tape to secure it.
    Design Note: The ESP32 floats freely inside the case without a tight mount. This is done deliberately to provide ample space for you to add extra sensors, batteries, or peripherals for your own projects. Despite this, the board hardly moves once the case is closed, ensuring no issues when inserting the USB cable.
    Align the Cover with the rails on the Main Body and snap it shut.
  5. Connect: Plug a USB-C cable into the port cutout on the back.
    Troubleshooting: If the device constantly connects and disconnects (boot loop) when plugged in, unplug it, hold the button labeled BOOT on the board, plug it back in while holding, and wait 2 seconds before releasing. This forces "Download Mode" so you can flash it.
๐Ÿ–จ๏ธ 3D Printed Case

You can download the STL/3MF files for the case on MakerWorld. Includes a ready-to-print profile with optimized settings.

Download STL/3MF
๐Ÿ“ธ View Assembly Images
3D Printed Case Parts
1. The 3D printed case parts
Snap Fit Mechanism
2. Case parts designed for snap-fit
Wiring with Jumpers
3. Option A: Wired with jumpers
Soldered Wiring
4. Option B: Soldered connection with button
Fitting Jumpers
5. Installing components (Jumpers)
Fitting Soldered
6. Installing components (Soldered + Button)
Final Result Front
7. Final Result
Back View USB
8. Rear view with USB-C connected

Step 2: Flash Firmware

Web Installer

The easiest way to get started. Connect your ESP32-C3 to your computer via USB and click the button below. Note: Requires a Chromium-based browser (Chrome, Edge, Opera).


Manual Installation

If the web installer doesn't work for you, or if you prefer to customize the firmware using Arduino IDE or PlatformIO, you can download the source code directly.

โš ๏ธ Compilation Requirement
The source code requires specific external libraries (WiFiManager, ArduinoJson, Adafruit SSD1306, Adafruit GFX Library, OneButton, PubSubClient) to compile successfully.
Please ensure you install all dependencies listed in the "Build & Compile Guide" section of the GitHub README.
๐Ÿ“ฆ Source Code
Get the latest code from the GitHub repository.
โ˜… Download on GitHub

Step 3: Initial WiFi Setup

  1. Connect to Device: On your Phone or PC, search for the WiFi network named Tinytosh and connect.
    ๐Ÿ”‘ Password: Tinytosh
  2. Configure Credentials: A "Captive Portal" page should open automatically.
    (If it doesn't open, type 192.168.4.1 into your browser).
    Click the Configure WiFi button, select your home network, and enter your password.
  3. Catch the IP & Name: The device will attempt to connect. Watch the OLED screen closely!
    Upon success, it will display "Connected!" followed by its IP Address (e.g., 192.168.0.100) and its unique Device Name (e.g., tinytosh-ab12).
    โš ๏ธ Note: This screen is displayed for only 3 seconds. If you miss it, simply unplug and replug the device to see it again.
  4. Access Panel: Connect your Phone/PC back to your Home WiFi (the same one Tinytosh is on). Type the IP address OR the unique local address (e.g., http://tinytosh-ab12.local) into your browser to open the Web Panel.
๐Ÿ“ธ View Connection Walkthrough
OLED showing AP Mode
1. Screen shows "Not Connected"
WiFi Settings on Phone
2. Connect to "Tinytosh" Network
WiFi Manager Portal
3. Click "Configure WiFi"
Entering Credentials
4. Enter Home WiFi Details
OLED showing IP
5. Success! Note the IP Address & Name
Web Panel Open
6. Open Local Name or IP in Browser

Step 4: Web Panel Configuration

Access the Web Panel by entering the device's IP address (or .local name) into your browser. Configure your device using the sections below:

โœจ Core Concept: Modular Dashboard

Tinytosh is designed to be fully customizable. Every screen listed below (Time, Weather, PC, etc.) acts as a standalone module.

How it works: Each section in the Web Panel has a main Enable Checkbox.
โ€ข Uncheck it: The screen is completely removed from the rotation and the settings collapse.
โ€ข Check it: The settings expand, and the screen is added to the cycle.

Example: Disable everything except "PC Monitor" to turn Tinytosh into a dedicated hardware tracker, or enable everything for a complete smart hub.

Drag & Drop Reordering

Take full control of your device's flow using the Screen Display Order panel.

How it works:
โ€ข Grab the โ˜ฐ handle to drag and drop your active screens into any sequence you like.
โ€ข Disabled screens are automatically pushed to the bottom and locked out of the rotation.
โ€ข Dynamic UI: When you click Save, the configuration panels on this web page will physically rearrange themselves to perfectly match your new custom layout!

๐ŸŽฅ View Interface Demo
Web Panel Interaction Demo
โš™๏ธ Global Settings & Location
Control Logic
  • Switch Screens Automatically: If checked, screens rotate automatically. If unchecked, the screen stays static until you press the hardware button.
  • Screen Cycle Interval: Time (in seconds) each screen stays visible before rotating.
  • Data Sync Interval: Frequency (in minutes) of data fetches for Weather, Air Quality, Crypto, Stocks, and Currencies.
Visual Effects

Customize how the device transitions between different screens:

  • Active Animations: Select exactly which effects you want to enable (Slide, Dissolve, Curtain, Blinds). If multiple are checked, the device will randomly cycle through your specific selection.
  • Time Format: Toggle between 12-hour (AM/PM) and 24-hour clock formats for both the device and web panel.
Location & Timezone

Tinytosh uses these settings to provide accurate Clock, Weather, Air Quality, and Holiday data.

  • Auto-Detect: Uses your IP address to automatically determine location, country, and timezone.
  • Manual Entry: Override with specific City names, Latitude/Longitude coordinates, precise Country selection, and native Timezones.
Source: ip-api.com
๐ŸŒ™ Night Mode & Power Saving

Set a quiet schedule to minimize sleep distractions and conserve API quotas.

  • Action Modes: Choose what happens during the scheduled hours: No Visual Change, Dim Display (minimum hardware contrast), Turn Display Off (completely black), or Dim then Turn Off (gradually steps down).
  • Dim Start Time: If you select "Dim then Turn Off," an extra time picker will appear. This lets you set exactly when the screen dims before fully turning off later in the night.
  • Smart Latching: Night Mode won't interrupt your reading. It waits patiently until the rotation naturally lands on your first (primary) screen before applying the dark settings and pausing the screen cycle.
  • Background Optimization: Background data fetches (Weather, Crypto, etc.) automatically slow down 10x during Night Mode to save power.
  • Temporary Wake: If the screen is Off, pressing the physical button will temporarily wake the device at minimum brightness for 30 seconds so you can check the time in the dark!
๐ŸŽฅ View Animation Demo
Screen Transitions Demo
๐Ÿ‘† Touch Button Controls

If you installed the optional TTP223 touch sensor, you can control Tinytosh directly:

  • Single Tap: Instantly skips to the next active screen in your rotation. If the display was turned off by Night Mode, this temporarily wakes it up.
  • Long Press (Hold): Locks or unlocks the current screen. Disables the auto-cycle rotation so you can keep a specific screen visible as long as you want.
๐Ÿ•’ Simple Clock
Function

Displays the current time and date, automatically synchronized via the internet based on your local timezone.

Settings

While location and timezone are managed in Global Settings, this screen offers specific customization:

  • Date Toggle: Choose to display the full date or hide it for a cleaner look.
Layout

Standard: A balanced view showing time at the top (Size 3) and the date/day below.
Minimalist: If the date is disabled, the clock switches to Jumbo Mode (Size 4), perfectly centered on both axes for maximum readability.

๐Ÿ“ธ View Screen Preview
Clock Layout Render
Layout Render
Clock Real Photo
Real Photo
๐ŸŒค๏ธ Weather Station
Function

Fetches and displays real-time weather conditions and daily forecasts based on your location.

Settings
  • Temperature Unit: Toggle between Celsius (ยฐC) and Fahrenheit (ยฐF).
  • Round Values: Choose between rounded integers (22ยฐ) or precise decimals (21.8ยฐ).
Layout

Top: City and Time. Center: Big Temperature and condition icon/desc. Bottom: Feels like, Humidity (%), and Wind Speed (km/h).

Source: api.open-meteo.com
๐Ÿ“ธ View Screen Preview
Weather Layout Render
Layout Render
Weather Real Photo
Real Photo
๐Ÿ“… Calendar & Holidays
Function

Displays the current date alongside a full monthly grid and tracks national public holidays based on your country.

Settings
  • Start Week On: Choose whether the calendar grid starts on Monday or Sunday.
  • National Holidays: Toggle the display of public holidays. When a holiday occurs, it replaces the weekday text and highlights the day on the grid.
  • Minimalistic Mode: Hides the monthly grid entirely and beautifully centers the current day, month, and year on the screen.
Layout

Standard: Left side displays a large day, current month, year, and weekday/holiday name. Right side displays a full month calendar with the current day boxed and holidays inverted.
Minimalist: The grid is hidden, and the date column expands to fill the screen for a clean, highly readable layout.

Source: date.nager.at (Public Holidays)
๐Ÿ“ธ View Screen Preview
Calendar Layout Render
Layout Render
Calendar Real Photo
Real Photo
๐Ÿƒ Air Quality
Function

Monitors local Air Quality Index (AQI) and specific pollutant levels to keep you informed about your environment.

Settings

Choose your preferred AQI standard (US or EU).

Standard Difference: US AQI (0-500) focuses on health risk thresholds. European AQI (0-100+) tracks specific pollutant concentrations (PM2.5, PM10, NO2).
Layout

Top: City and Time. Center: AQI Value, Standard Type, and Status Icon. Bottom: Real-time PM2.5, PM10, and NO2 levels in ยตg/mยณ.

Source: air-quality-api.open-meteo.com
๐Ÿ“ธ View Screen Preview
AQI Layout Render
Layout Render
AQI Real Photo
Real Photo
๐Ÿ“Š Stock Tracker
Function

Tracks live market data for ~100 top global assets, including US Mega-Cap Tech, broad market ETFs, and international ADRs.

Settings
  • Asset Selection: Choose your preferred stock or ETF from the curated dropdown.
  • Display Format: Toggle between showing the minimalist Ticker (e.g., AAPL) or the Full Company Name (e.g., Apple Inc.).
Layout

Shows the stock ticker/name, current price in USD, a daily trend icon, and the percentage change since the previous close.

Source: stooq.com
๐Ÿ“ธ View Screen Preview
Stock Layout Render
Layout Render
Stock Real Photo
Real Photo
๐Ÿ“ˆ Crypto Tracker
Function

Tracks live market prices and 24-hour trends for the top 75 global cryptocurrencies.

Settings
  • Coin Selection: Select your preferred coin to track its live market data.
  • Display Format: Toggle between the clean, standard Ticker (e.g., BTC) or displaying the Full Coin Name (e.g., Bitcoin).
Layout

Shows the coin ticker/name, current price in USD, a daily trend icon, and the 24h percentage change.

Source: api.coinlore.net
๐Ÿ“ธ View Screen Preview
Crypto Layout Render
Layout Render
Crypto Real Photo
Real Photo
๐Ÿ’ฑ Currency Tracker
Function

Tracks live exchange rates between over 150 global fiat currencies.

Settings
  • Base & Target: Select your currency pair (e.g., USD to EUR).
  • Multiplier Amount: Essential for viewing exchange rates with large differences. Instead of viewing the tiny fraction for 1 unit, you can track the rate for 10, 100, 1,000, or 10,000 units for better readability.
  • Display Format: Toggle between the Base Currency Code (e.g., USD) or displaying the Full Currency Name (e.g., US Dollar).
Layout

Top Left: Base Currency (Large). Bottom Left: Target Rate. Right Side: Multiplier context aligned to the edge (e.g., "1 USD =", "1000 ARS =").

Source: cdn.jsdelivr.net/@fawazahmed0/currency-api
๐Ÿ“ธ View Screen Preview
Currency Layout Render
Layout Render
Currency Real Photo
Real Photo
๐Ÿ–ฅ๏ธ PC Monitor
Function

Connects to the Tinytosh PC software on your computer to stream hardware telemetry via USB or Wirelessly.

Settings
  • Auto-hide: Choose to automatically hide this screen from your rotation when the PC is disconnected or turned off.
Layout

Displays four horizontal bars: CPU Load (%), RAM Usage (%), Disk Capacity (%), and Network Download Speed (KB/s or MB/s).

Source: Tinytosh PC
๐Ÿ“ธ View Screen Preview
PC Layout Render
Layout Render
PC Real Photo
Real Photo
๐ŸŽต PC Media
Function

Streams current media playback info from your PC via the Tinytosh PC software (Spotify, Browsers, Apple Music, etc.).

Settings
  • Auto-hide: Choose to automatically hide this screen from your rotation when no media is currently playing.
Layout

Displays a media icon, playback status (Playing/Paused/Stopped), Track Name, Artist, and Album.

Source: Tinytosh PC
๐Ÿ“ธ View Screen Preview
Media Layout Render
Layout Render
Media Real Photo
Real Photo
๐Ÿ–จ๏ธ BambuLab 3D Printer
Function

Connects directly to your BambuLab 3D printer over your local network to stream live printing telemetry.

Settings
  • Required Credentials: You will need your printer's Serial Number and Access Code. You can easily find these on your printer's physical screen under Settings > Network (or WLAN).
  • Printer IP Address: This field is optional. Tinytosh features an auto-discovery scanner that will actively hunt for your printer on the network. If your router assigns a new IP to your printer every restart, simply leave this blank!
  • Connection Time: After entering your settings, please allow up to a minute for Tinytosh to negotiate the secure connection. The data will start populating on the Web Panel and your OLED display once connected.
  • Auto-hide: Choose to automatically hide this screen from your rotation when the printer is offline or disconnected.
Layout

This module dynamically changes its screen layout based on what the printer is doing:

  • Idle Mode: When the printer is resting, displaying a cluttered screen full of zeros makes no sense. The UI shifts to a minimalist layout showing just a large printer icon, the "Idle" status, and the current bed and nozzle temperatures.
  • Printing Mode: When a print starts, the UI expands into a dense telemetry dashboard showing: Print Progress (%), Time Left (mins), Current vs Total Layers, the File Name, Target & Actual Temperatures for Bed/Nozzle, and Part/Auxiliary Fan speeds (%).
Source: BambuLab Printer (MQTT)
๐Ÿ“ธ View Screen Previews
Bambu Idle Layout Render
Layout Render
Bambu Idle Real Photo
Real Photo
Bambu Active Layout Render
Layout Render
Bambu Active Real Photo
Real Photo

Step 5: PC Software

To enable PC Monitor and PC Media modes, you need the PC software running on your computer. This lightweight app reads your system stats and sends them to Tinytosh over USB or Wi-Fi.

Tinytosh App Main Tinytosh App Settings
Key Features
  • Native Monitoring: Reads system stats (CPU, RAM, Network) directly โ€” no AIDA64, HWiNFO, or third-party bloatware required.
  • Wireless Telemetry & Auto-Connect: Automatically discovers Tinytosh devices on your network (mDNS) and connects on startup to broadcast stats via USB or completely wirelessly!
  • Smart Connection Fallback: Prioritizes USB for stability. Yank the cable? It instantly and silently falls back to Wi-Fi.
  • Hardware Pairing Lock: Tinytosh securely pairs to the active PC to ensure multiple computers don't fight over the display.
  • Dynamic UI & Complete Control: The PC app dashboard mirrors your device! Configuration panels automatically reorder in real-time, letting you manage all settings directly from the desktop.
  • Real-time Dashboard: See exactly what telemetry data is being sent to your device at a glance.
  • Manual Control: Override port/IP selection and toggle data streaming instantly.
  • System Tray & Boot: Minimizes quietly to the background; accessible anytime via the tray icon, with an optional setting to launch automatically on login.
Fetching latest version...
โš ๏ธ A Note on Security Warnings

I am a hobbyist developer, not a corporation. I do not have expensive code-signing certificates from Microsoft or Apple. Because of this, your OS or browser may flag the app as "Unknown" or "Potentially Dangerous." This is standard behavior for unsigned open-source software.

If you have concerns, the entire project is open-source. You are welcome (and encouraged!) to review the code on GitHub to verify it is safe.

Windows Users:
Browser may block the download. Click "Keep" or "More actions > Keep anyway". SmartScreen may also appear; click "More Info > Run Anyway".
macOS Users:
If you see "App is damaged" or "Can't be opened", move it to Applications, open Terminal, and run:
xattr -cr /Applications/TinytoshPC.app

Step 6: Enjoy & Innovate

Congratulations! Your Tinytosh is now up and running.

Success!

Tinytosh is Open Source for a reason โ€” it is designed to be a playground for your creativity. You are not limited to the features provided out of the box.

Make it Yours

  • Modify the Code: Hack the source, tweak fonts, or adjust animation speeds.
  • Build New Modules: Create your screen, design new animation, or add customization.
  • Share Your Work: Show off your build, remix the case, or contribute new features.
๐Ÿ’ก Have an idea?
The best features come from user suggestions. If you have an idea for a new screen, found a bug, or just want to show off your build, join the conversation on your preferred platform.