Plugin Marketplace

Every widget.
Zero extra accounts.

Pinodock reads from services you're already signed into in other tabs. No OAuth redirects, no API keys, no extra logins. Open a tab and your widgets come alive.

13
plugins available
3
no-auth, live feeds
7
session-connected
0
data sent to us
1
Install Pinodock Add the Chrome extension
2
Enable a plugin Pick from Settings → Plugins
3
Open the service tab Keep Spotify, Gmail, etc. open
4
Widget appears instantly Data flows on your next new tab
🔶
Hacker News
Tech · News
Live

Top stories from the HN front page, refreshed every 5 minutes. Shows title, score, and comment count. Click any headline to open it in a new tab.

Refreshes every 5 min
Source: hacker-news.firebaseio.com
Crypto Prices
Finance · Markets
Live

BTC, ETH and SOL spot prices with 24h percentage change via CoinGecko's public API. No API key needed, no account required.

Refreshes every 5 min
Source: api.coingecko.com
🤖
Reddit Feed
Social · News
Live

Top posts from any subreddit you choose. Configure your preferred community once in Settings and it shows today's top posts with score and comment count.

Refreshes every 5 min · configurable subreddit
Source: reddit.com/.json
🎵
Spotify
Music · Entertainment
Connected

Now-playing track, artist, and album art pulled from your open Spotify Web Player tab. No OAuth, no Spotify Developer account needed.

Needs tab open: open.spotify.com
Data: track title, artist, playback state
📅
Google Calendar
Productivity · Schedule
Connected

Today's upcoming events, event titles, and times scraped from your open Google Calendar tab. See your schedule at a glance every new tab.

Needs tab open: calendar.google.com
Data: today's events, times, titles
✉️
Gmail
Communication · Email
Connected

Unread email count and the latest subject lines from your inbox. Reads directly from your open Gmail tab — nothing touches an external server.

Needs tab open: mail.google.com
Data: unread count, latest subjects
▶️
YouTube Studio
Creator · Video
Connected

Latest video view counts and your subscriber total — pulled from your YouTube Studio dashboard tab. Built for creators who want their stats on every new tab.

Needs tab open: studio.youtube.com
Data: subscriber count, recent video views
☁️
AWS Console
DevOps · Cloud
Connected

Current month billing total and active AWS region — read from your open AWS Console tab. No IAM keys, no credentials stored anywhere.

Needs tab open: console.aws.amazon.com
Data: monthly cost, active region
🐙
GitHub
Dev · Version Control
Connected

Your unread notification count and logged-in username pulled from your open GitHub tab. A quick pulse on what needs your attention.

Needs tab open: github.com
Data: notification count, username
Todoist
Productivity · Tasks
Connected

Today's and overdue tasks from Todoist, shown inline on your new tab. Reads your auth token from the open Todoist tab — falls back to DOM scraping if token isn't available.

Needs tab open: app.todoist.com
Data: today's tasks, overdue items
💬
Slack
Communication · Messaging
Soon

Unread DMs and channel mention counts from your Slack workspace, without leaving your new tab.

🟣
Linear
Dev · Project Management
Soon

Issues assigned to you, current sprint progress, and cycle updates from your active Linear workspace.

📝
Notion
Productivity · Notes
Soon

Recently visited pages and open database tasks from your Notion workspace, surfaced at a glance.

Advanced

Custom Plugins — write your own.

Write any JavaScript that fetches data and returns it. Pinodock runs it safely in an isolated sandbox — no chrome.* access, no extension APIs. Just fetch + return.

✍️
Write JavaScript
Use fetch(), async/await, and any browser API. Return a string or a structured object.
🔒
Runs in a sandbox
Code executes inside a sandboxed iframe with a relaxed CSP. It cannot access chrome.* APIs, your storage, or your tabs.
Test before saving
The editor has a live Test button. Output appears inline before you commit. Plugins time out after 5 seconds.
📐
Return structured data
Return a plain string, or { title, items: [{label, value}] } for a key-value table widget.
How to add a custom plugin
1
Open Settings → Plugins and scroll to the Custom (Advanced) section at the bottom.
2
Click + Add custom plugin. Give it a name and emoji icon.
3
Paste or write your JavaScript in the code editor. Click Test to run it instantly and see the output.
4
Click Save. The plugin appears as a widget on your active dashboard — toggle it on/off any time.
Sample plugins — copy & paste
Bitcoin Price Live
const res = await fetch(
  'https://api.coindesk.com/v1/bpi/currentprice.json'
)
const data = await res.json()
return {
  title: 'Bitcoin',
  items: [
    { label: 'USD', value: '$' + data.bpi.USD.rate },
    { label: 'EUR', value: '€' + data.bpi.EUR.rate },
    { label: 'GBP', value: '£' + data.bpi.GBP.rate },
  ]
}
🌐 Public IP & Location Live
const res = await fetch('https://ipapi.co/json/')
const d = await res.json()
return {
  title: 'Network',
  items: [
    { label: 'IP',      value: d.ip },
    { label: 'City',    value: d.city },
    { label: 'Country', value: d.country_name },
    { label: 'ISP',     value: d.org },
  ]
}
🐙 GitHub Trending (daily) Live
const res = await fetch(
  'https://gh-trending-api.deno.dev/repositories?since=daily&limit=5'
)
const repos = await res.json()
return {
  title: 'Trending on GitHub',
  items: repos.map(r => ({
    label: r.author + '/' + r.name,
    value: '★ ' + r.stars,
  }))
}
📅 On This Day Live
const d = new Date()
const m = d.getMonth() + 1, day = d.getDate()
const res = await fetch(
  `https://en.wikipedia.org/api/rest_v1/feed/onthisday/events/${m}/${day}`
)
const data = await res.json()
const event = data.events?.[0]
return event
  ? `${event.year}: ${event.text?.slice(0, 120)}…`
  : 'No events found for today.'
💱 Exchange Rates (USD base) Live
const res = await fetch(
  'https://open.er-api.com/v6/latest/USD'
)
const data = await res.json()
const show = ['EUR','GBP','JPY','AED','INR']
return {
  title: 'FX vs USD',
  items: show.map(c => ({
    label: c,
    value: data.rates[c]?.toFixed(4) ?? '—',
  }))
}
📖 Word of the Day Live
const res = await fetch(
  'https://api.dictionaryapi.dev/api/v2/entries/en/' +
  ['ephemeral','laconic','serendipity',
   'quixotic','mellifluous'][Math.floor(Math.random()*5)]
)
const [entry] = await res.json()
const meaning = entry.meanings[0]?.definitions[0]
return {
  title: entry.word,
  items: [{ label: meaning?.partOfSpeech ?? '', value: meaning?.definition ?? '' }]
}
Return value reference
Plain string
return "Hello, world!"
Displays as a single paragraph in the widget.
Key-value table
return {
  title: 'My Widget',
  items: [
    { label: 'Key', value: 'Value' },
  ]
}
Displays as a labelled table with a title header.
⚠️ Only add code you trust. Custom plugins run JavaScript in your browser. While they cannot access Pinodock's storage or Chrome APIs, they can make network requests. Do not paste snippets from untrusted sources.
Dashboard Presets

Pick a preset, or build your own.

Pinodock ships with four curated dashboards, each with the right plugins and layout pre-configured. You can edit any of them or add up to 6 custom dashboards.

💼
Work
Everything you need for a productive workday at a glance.
📅 Google Calendar ✉️ Gmail 🐙 GitHub ✅ Todoist
Balanced layout (2-column)
🎬
Creator
Stats, music, and community in one place for content creators.
▶️ YouTube Studio 🎵 Spotify 🤖 Reddit
Balanced layout (2-column)
⌨️
Developer
Code, infra and tech news — everything a developer glances at dozens of times per day.
🐙 GitHub 🔶 Hacker News ☁️ AWS Console ₿ Crypto
Compact layout (3-column)
🌿
Personal
A calm home screen with music, markets, and your community feed.
🎵 Spotify ₿ Crypto 🤖 Reddit
Spacious layout (1-column)

Your data never leaves your browser.

Session-connected plugins work by injecting a small read-only function into your already-open tab. The data is read locally, cached for 5 minutes in chrome.storage.local, and displayed on your new tab. Nothing is sent to PencilCard or any third party.

Live feed plugins (Hacker News, Crypto, Reddit) call public APIs directly from your browser — the same request you'd make manually. We have no server in the middle.

Read-only access Stored locally only No PencilCard server 5-min cache, then discarded
Get started

Install Pinodock.
Free tier plan (no time limit).

No account. No email. Pick the plugins that match your workflow and open a beautiful, useful new tab every time.