Degoog Docs

Degoog Store and extensions

Add a repository, install what you want, keep it updated, and understand what you are trusting.

How the Store works

There is no central marketplace and no server between you and the extensions. A store repository is just a git repository whose package.json lists what it publishes. You add its URL, Degoog clones it, and its catalogue appears.

That means anyone can publish a store, including you. It also means nobody is vetting the code on your behalf.

The Store tab in settings. A Repositories box at the top has Refresh all and Add repository buttons and the official repository logo. Below it, the Catalog has a search box, two drop-downs and cards for 4play status, AI Summary and Weather. The Store tab in settings. A Repositories box at the top has Refresh all and Add repository buttons and the official repository logo. Below it, the Catalog has a search box, two drop-downs and cards for 4play status, AI Summary and Weather.
The Store tab, with repositories on top and the catalogue underneath.

Adding a repository

  1. Open Settings, Store.
  2. Press Add repository, paste a git URL into the box that shows up and press +.
    The Repositories box with a URL field under the Add repository button. The field contains https://github.com/someone/their-degoog-extensions and a blue plus button sits on its right. The Repositories box with a URL field under the Add repository button. The field contains https://github.com/someone/their-degoog-extensions and a blue plus button sits on its right.
    The URL box that Add repository opens.
  3. The catalogue below fills in with everything that repository publishes.

The two you probably want:

  • Official: https://github.com/degoog-org/official-extensions. The only store curated and maintained by the Degoog team. These get automatically added to your store when you first install Degoog.
  • Community: browse the community extensions list for repositories published by other people.

Repositories show up as a row of logos. Click one to open it, and it shows when it was last refreshed and has a Refresh button; Refresh all does the lot. Remove deletes a repository, but only once you have uninstalled everything you installed from it. The official one can't be removed, so it has no Remove button.

The Repositories box after clicking the official logo. Below the logo it shows official-extensions, the URL https://github.com/degoog-org/official-extensions.git, the text just now and a Refresh button. The Repositories box after clicking the official logo. Below the logo it shows official-extensions, the URL https://github.com/degoog-org/official-extensions.git, the text just now and a Refresh button.
The official repository, opened by clicking its logo.

Finding things

The catalogue has a search box and two filters: extension type (Plugins, Themes, Engines, Transports, Autocomplete, Favicons, Shortcuts) and, for plugins, a sub-type filter (Bang, Slot, Search tab, Search bar). Extensions with screenshots get a gallery you can open in a lightbox.

Engines get a sub-type filter too, by search type (Web, Images, News and so on), and the last drop-down filters by whether you have it installed.

The Store catalog with the type drop-down set to Engines. Cards for Google, Google CSE, Google Images, Google Videos, Bing and Bing Images each have an Install button. The Store catalog with the type drop-down set to Engines. Cards for Google, Google CSE, Google Images, Google Videos, Bing and Bing Images each have an Install button.
The catalogue filtered down to engines.

The four plugin sub-types, in plain terms:

  • Bang adds a !command. See Bangs and commands.
  • Slot adds a panel above your results, below them, or in the sidebar, shown only when your query matches. The AI Summary, TMDb, Math, GitHub, and RSS plugins all work this way.
  • Search tab adds a whole extra tab to the results page.
  • Search bar adds a control next to the search box itself.

Plugins can also be interceptors (which rewrite your query before searching, like the Spell Check plugin), middleware (which can gate the whole settings area, for example to put it behind a login), or routes (which add HTTP endpoints).

Installing, updating, removing

Install is one button. Installing a plugin shows a confirmation first, because plugins run code on your server.

Once it's in, the card gets a green dot and an Uninstall button where Install used to be.

Three Store cards. DuckDuckGo and DuckDuckGo Images show a green dot and an Uninstall button. DuckDuckGo News still shows a blue Install button. Three Store cards. DuckDuckGo and DuckDuckGo Images show a green dot and an Uninstall button. DuckDuckGo News still shows a blue Install button.
Two installed engines next to one that is not.

When newer versions exist, the Store shows an update count and an Update all button. Individual items get their own Update.

After installing, go to the matching tab to check it. Engines and autocomplete providers come switched on, themes need selecting; some need configuration before they do anything. Hover the dot next to Configure and it tells you if one needs configuration.

Favicon extensions supply the icon next to each result. Without one, and with the favicon store off, every result shows a "No favicon extension installed" placeholder. The official store has Google, DuckDuckGo, Kagi, Yandex, Site favicon (experimental) and Identicon, which works offline. Install one or two and set the order in Settings, Favicons.

Some extensions need a server restart to load properly. Degoog shows a "Restart required" pop-up with a button that does it, or you can hit Restart server later from Settings, Server.

Themes

A theme restyles the entire UI: templates, CSS, fonts, and assets. Degoog ships one built-in theme and the official store adds several more, including one styled after this very sexy documentation site.

For a smaller tweak than a whole theme, Settings, Server, Custom CSS injects your own CSS into every page. It loads after theme and plugin styles, so it wins by default.

The boring safety shit

Extensions run code on your server. Not sandboxed, not reviewed by anyone in the middle. A store repository is a git URL, and whoever controls that URL controls what runs on your machine.

Practical advice, none of it dramatic:

  • Community extensions are only initially vetted when they are added to the community list. Nobody watches them afterwards. What you install is your responsibility.
  • If your instance is reachable from the internet, put a password on settings. An unlocked instance lets anyone who can reach it install extensions, which means anyone can run code on your server. Set DEGOOG_SETTINGS_PASSWORDS, or run with DEGOOG_PUBLIC_INSTANCE=true, ideally both.
  • Read the exposure note on an extension card. "Browser may contact external services directly" means your own browser, not just the server, will talk to third parties. It's the little icon in front of the name in the settings tabs: a green tick means everything goes through your server, a yellow warning triangle means it doesn't. Hover it to read the note.
    The Plugins tab. Help and No-JS page have a green tick before their name. IP Lookup has a yellow warning triangle, and hovering it shows the tooltip Browser may contact external services directly. The Plugins tab. Help and No-JS page have a green tick before their name. IP Lookup has a yellow warning triangle, and hovering it shows the tooltip Browser may contact external services directly.
    The warning triangle on IP Lookup, with its note.
  • DEGOOG_OUTGOING_ALLOWED_HOSTS restricts the requests engines and extensions make to a hostname allowlist, which is a solid extra layer on an exposed instance.

Tracking pre-release extensions

Setting DEGOOG_BETA_STORE=1 makes Degoog prefer the develop branch of every store repository over main or master, falling back silently when that branch does not exist. It is for extension developers and people who enjoy living slightly ahead of everyone else.