Tktsto
TK's Tree Style Tab Outliner -- Organize your online life and sync between browsers, using your own private server
Install / Use
/learn @ToyKeeper/TktstoREADME
TK Tree Style Tab Outliner
Windows, tabs, bookmarks, notes, and more... all mixed together in one place, a highly structured living document that you and your browsers build together to organize your online life.
It can also sync real-time-ish across all your browsers, to make sure you always have what you need -- even if they're different browsers. Close your session in Chrome, then start up Firefox or Brave or whatever, and continue that same session where you left off. And you control your data -- nothing is sent to corporate clouds, only to a server of your choice. Self-hosting is recommended for maximum privacy.
This extension makes many of the browser's built-in functions wholly or at least partially obsolete -- bookmarks, session management, vertical tabs, read-later, notes, stacked tabs, AI tab organizers, etc. You could still use those things, but why bother when you have something better?
[TOC]
Screenshots
Just a few pics to give a general idea what this is all about.
Example usage, in dark and light themes:

Some of the dialog popups:

Internal documentation / help pages:

Background / Inspiration
I used Tabs Outliner for a long time. It was great. But it was missing some important things, and it has been increasingly buggy over time from poor maintenance, and it's proprietary so I can't fix it.
I also tried to use Tree Style Tab in Firefox, but even with multiple add-ons to enhance it, it just can't do what I wanted. And I tried several others, but none really hit the mark.
So I decided to replace Tabs Outliner with something brand new.
And while I'm at it, I can finally add all the stuff I wanted it to have.
Improvements over Tabs Outliner
The biggest upgrades are pretty broad:
- It should be free and open-source. That is the only way to build tech which stands the test of time. No crippled "free" version to convince people to buy the real thing. Donations are GREATLY appreciated though, since I need to buy groceries and pay rent in order to keep working on this.
- I want the tree continuously backed up. If I lose a hard drive again, that should not make me lose my browser session, notes, etc.
- It should back up to a server the user owns and controls. It should not depend on a rent-seeking, privacy-violating corporate cloud.
- I want all my browsers to share the same tree. Having separate trees and sessions for each browser is a huge pain.
- I don't want to be locked into using Chrome. It should support more than one browser. Sync between Chromium, Firefox, Vivaldi, Edge, Brave, ... whatever. Vendor lock-in sucks, especially with the major players all racing to fill their browser with AI to analyze everything you do online.
- I want to be able to easily export the tree in standard formats like json, markdown, and plain text.
It should also have lots of other features which are missing in Tabs Outliner:
- Sidebar mode (and "just this window" mode, while running as a sidebar)
- Even more compact layout than Tabs Outliner, to make it fit better in a narrow sidepanel
- Snapshots and revision history so you can undo mistakes, restore old sessions easily, see how things changed over time, etc. And on that note...
- Undo
- Checklists / tasks
- Search
- Sort
- Longer notes when desired
- Configurable hotkeys, both while focused and while browsing
- Batch operations on marked items
- Ability to easily move sets of nodes between windows without a mouse or opening a "full tree" view (mark nodes in one window, switch to other window, then paste the marked nodes to move them)
- Open new blank tabs next to the current tab
- User's choice of several themes, and ability to add more
- Better handling of crashes and restarts... no huge trees full of old crashed windows to manually recover and de-dupe
- Better tools to find and remove duplicates, especially for users who are importing their old sessions
- Bigger drop zones so the user doesn't have to be so precise during drag-n-drop
- Better visual indication for where the open tabs are in a massive tree
- Proper Manifest V3 support so it doesn't need to be manually restarted all the time
- More generally, fixes a wide range of bugs which Tabs Outliner had
Dependencies
Client dependencies: None. Only your browser. However, it does need to be recent enough to support the sidepanel feature.
Client build dependencies: Not much. Get (or git) a copy of the source. For Chrome, that alone is sufficient. For Firefox, you'll also need a command line, the "make" program, and the "zip" program.
Javascript dependencies are their own circle of hell, so this is built using just vanilla javascript with no outside dependencies at all.
Server dependencies: TBD. Probably Python and FastAPI.
Installation
Install from your browser's app store, ideally. It boosts the numbers in the app store and helps this extension gain more visibility. It also allows easier updates, in case you want updates when a new version is released.
These are the stores where TKTSTO is published. Each link is a redirect to the store's extension page:
- Firefox: https://toykeeper.net/tktsto/firefox
- Chrome: https://toykeeper.net/tktsto/chrome
- Edge: https://toykeeper.net/tktsto/edge
Please leave a review at the store so "the algorithm" will know to show the extension to other people.
Installing from source
If your browser store isn't added yet, or if you prefer to build the extension yourself, here's how:
Chrome
In Chromium-based browsers:
- Enable "developer mode" in the browser's extensions page.
git clone --tags https://github.com/ToyKeeper/tktsto.gitcd tktstomake chrome-ziprm -rf activeif you already have anactive/dir.mv build active- Use "load unpacked extension" in the browser, to load the copy in the
active/dir.
This process mostly just copies all the files into active/, but also inserts
required values into the manifest.json file. Chrome can run extensions
in-place from source, but this repository's manifest needs a few values filled
in first, and that is done by make.
Firefox
In Firefox, it's necessary to sign the extension because most 2025-and-later
versions won't run unsigned extensions even if you configure it to not require
signatures. If you're lucky enough to be able to run unsigned extensions, then
just run make to generate a compatible .zip file, and load it from the
dist/ dir. Otherwise, try the following...
Create an account and API keys at https://addons.mozilla.org/developers/ (under "API Keys").
Create a .env file containing a few settings:
# get these from your account at addons.mozilla.org/developers
JWT_ISSUER='MYUSER'
JWT_SECRET='MYSECRET'
# set your own extension ID and name here
EXT_NAME="TK Tree Style Tab Outliner (My Name's personal build)"
FF_EXT_ID="your-email-address+tktsto@your-email-domain.com"
Run make firefox-xpi.
Install the .xpi file.
Server
FUTURE: I also recommend installing the backup/sync server, so you can automatically save snapshots of your session, sync your session between multiple devices, convert the snapshots to other formats, and archive old data that you don't need in the tree any more.
Usage
The extension should show a tutorial thingy after being installed for the first time. You can also access the tutorial again later by pressing "?" in the tree view while it has focus. Or there's the "Help" button for full documentation.
Initial setup / configuration
Basic setup:
- Click the "Options" button to get the config settings.
- Set a client name.
- Configure automatic backups.
- Choose a theme, and any other options you'd like.
- Go through the tutorial. It should have been generated as a set of nodes in the tree when you installed the extension.
FUTURE: I strongly recommend installing and using the provided backup/sync server, so you can automatically save snapshots of your session and sync between browsers. This is covered in the server's readme file.
Then maybe go into the "Extension hotkeys" page of your browser to configure global command hotkeys.
- Firefox: Go to
about:addons, then click the gear icon, then "Manage Extension Shortcuts". - Chrome:
chrome://extensions/shortcuts - Edge:
edge://extensions/shortcuts - Brave:
brave://extensions/shortcuts - Vivaldi:
vivaldi:extensionsthen "Keyboard shortcuts".
The browser doesn't allow extensions to define more than 4 recommended global hotkeys. So you should set those up. I recommend assigning keys which match the key bindings for the sidepanel's normal usage, like when it has keyboard focus... but add "Alt" to each one so you can perform those same functions without having to focus the sidepanel first.
For example, when the sidepanel is focused, some of the default hotkeys include...
u: unload the highlighted nodeEnter: load the highlighted nodeUp/Down: move the cursorShift+Up/Shift+Down: move the node the cursor is onSpace: expand/collapse the highlighted node
So in your extension hotkeys, I'd recommend assigning them like this:
Alt+u: unload the current tabAlt+Enter: load the highlighted nodeAlt+Up/Alt+Down: move the cursorAlt+Shift+Up/Alt+Shift+Down: move the node the cursor is onAlt+Space: expand/collapse the highlighted node
Just take the regular key and add "Alt". Do this for every function you think you'll want to use during normal browsing without having to focus the sidepanel first.
Roadm
Related Skills
node-connect
352.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
