MCPcopy Index your code
hub / github.com/buka-studio/echotab

github.com/buka-studio/echotab @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,166 symbols 2,769 edges 362 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

og

EchoTab

Overview

EchoTab is a keyboard-first Chrome extension for managing browser tabs. Save tabs, organize them with tags, and find them fast.

Core features:

  • Save and close tabs with a single shortcut
  • Tag-based organization with bulk operations
  • Fast fuzzy search across all saved tabs
  • Shareable collections via public links
  • Data stays local (unless explicitly shared)

Tech stack:

  • Extension: React, TypeScript, WXT (Vite), Zustand, shadcn-ui, cmdk
  • Web: Next.js
  • Monorepo: Turborepo, pnpm

Installing

You can install the extension in a couple of ways:

Installing from the Web Store

Building from Source

After downloading the code, run the following commands:

pnpm install
npx turbo build

After obtaining the build, follow these steps to add the extension to your browser:

  1. Open the extensions page in Chrome (chrome://extensions or edge://extensions).
  2. Enable Developer Mode.
  3. Drag the downloaded build folder onto the extensions page to import it. Do not delete the folder afterward.

Development

To set up the development environment, run the following commands:

npm install
npx turbo dev

Generating a consistent development key

It's useful to have a consistent extension ID during development. One way to do it is by using the Chrome Developer Dashboard (it requires paying a 5$ fee, though).

You can also generate a key locally by following these steps:

  • Generate keys:
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem

openssl rsa -in key.pem -pubout -outform DER | openssl base64 -A
  • Generate extension ID:
openssl rsa -in key.pem -pubout -outform DER | shasum -a 256 | head -c32 | tr 0-9a-f a-p

Why yet another tab management extension?

Previously, I've used OneTab and Toby but wanted something in-between with the following characteristics:

  • No sign-up required for data import/export and other extra features.
  • Simple and clean UI.
  • Basic search/filtering capabilities.
  • Intuitive tagging with excellent keyboard support.
  • Smooth performance even with a large number (1000+) of saved tabs.

License

Licensed under the MIT license.

Extension points exported contracts — how you extend this code

ITabInfoService (Interface)
(no doc) [6 implementers]
apps/extension/src/TabInfo/TabInfoService.ts
RichEditorRef (Interface)
(no doc) [1 implementers]
packages/ui/src/RichEditor/RichEditor.tsx
PublicList (Interface)
(no doc)
packages/lists/src/models.ts
Links (Interface)
(no doc)
packages/db/src/types.ts
TargetData (Interface)
(no doc)
apps/web/src/app/Hero/Hero.tsx
Props (Interface)
(no doc)
apps/extension/src/ExpandIconButton.tsx
RenderProps (Interface)
(no doc)
packages/ui/src/SortableVirtualGrid.tsx
PublicLink (Interface)
(no doc)
packages/lists/src/models.ts

Core symbols most depended-on inside this repo

cn
called by 289
packages/ui/src/util.ts
error
called by 71
apps/extension/src/util/Logger.ts
pluralize
called by 26
apps/extension/src/util/index.ts
getMetaContent
called by 20
apps/extension/src/TabInfo/MetadataParser.ts
createLogger
called by 15
apps/extension/src/util/Logger.ts
addListener
called by 15
apps/extension/src/util/ChromeLocalStorage.ts
log
called by 14
apps/extension/src/util/Logger.ts
useTagsById
called by 13
apps/extension/src/store/tagStore.ts

Shape

Function 870
Method 126
Interface 107
Class 52
Enum 11

Languages

TypeScript100%

Modules by API surface

apps/extension/src/store/tabStore.ts56 symbols
apps/extension/src/store/bookmarkStore.ts48 symbols
packages/ui/src/FileUpload.tsx32 symbols
apps/extension/src/ActiveTabs/ActiveCommand.tsx21 symbols
apps/extension/src/Bookmarks/BookmarkCommand.tsx20 symbols
apps/extension/src/snapshot/SnapshotStore.ts19 symbols
apps/extension/src/TabInfo/TabInfoService.ts17 symbols
packages/ui/src/RichEditor/plugins/MentionNode.tsx16 symbols
apps/extension/src/util/Logger.ts16 symbols
apps/extension/src/store/tagStore.ts16 symbols
apps/extension/src/store/curateStore.ts16 symbols
apps/extension/src/Settings/DataPage/EchotabImporter.ts16 symbols

For agents

$ claude mcp add echotab \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact