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.
  • ๐ŸŒค๏ธ 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!

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) 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 Address: The device will attempt to connect. Watch the OLED screen closely!
    Upon success, it will display "Connected" followed by its Local IP Address (e.g., 192.168.0.100).
    โš ๏ธ Note: The IP 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 that IP address 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
Web Panel Open
6. Open IP in Browser

Step 4: Web Panel Configuration

Access the Web Panel by entering the device's IP address 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, and Air Quality data.

  • Auto-Detect: Uses your IP address to automatically determine location and timezone.
  • Manual Entry: Override with specific City names, Latitude/Longitude coordinates, and Timezone strings.
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), or Turn Display Off (completely black).
  • 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
๐Ÿ•’ Simple Clock
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
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
๐Ÿƒ Air Quality
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
Settings

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

  • 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
Settings

Select your preferred coin from the top 75 global cryptocurrencies to track 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
Settings

Track live exchange rates between over 150 global fiat currencies.

  • 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 Bridge software on your computer to stream hardware telemetry via USB or Wirelessly.

Layout

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

Source: Tinytosh Bridge
๐Ÿ“ธ View Screen Preview
PC Layout Render
Layout Render
PC Real Photo
Real Photo

Step 5: PC Bridge Software

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

Tinytosh Bridge App Main Tinytosh Bridge 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.