# Complexity: a browser extension that rebuilds the Perplexity AI interface

> A TypeScript monorepo that ships a Chrome and Firefox extension adding extra models, custom prompts and UI changes to Perplexity AI, released under MPL-2.0 with a separate trademark policy.

**pnd280/complexity** — ⚡ Supercharge your favourite AI Chat web apps. Currently supports Perplexity AI.

- Repository: https://github.com/pnd280/complexity
- Website: https://cplx.app
- Stars: 1,244 · Forks: 119
- Language: TypeScript
- License: MPL-2.0
- Published: 2026-10-07 · Updated: 2026-10-07 · Language: en
- Canonical page: https://hysenlabs.com/projects/pnd280-complexity

## It changes a web page rather than replacing the app

Complexity is not a chat client. It is a browser extension that runs inside the Perplexity AI site and adds to it. The README is explicit about the origin: it was originally a Perplexity AI extension, and the repository has since been restructured into a suite of enhancements for multiple platforms and services.

That distinction drives everything else about the design. The extension has to locate elements in a DOM it does not own, listen for state changes in an application whose internals it cannot see, and re-inject those behaviours whenever the single page app re-renders itself. The repository topics say the same thing from the other side: `chrome`, `chrome-extension`, `firefox`, `firefox-addon`, `perplexity`, `perplexity-ai`. There is no API key, no local model and no proxy in the picture.

The install story is correspondingly ordinary. There are listing pages for the Chrome Web Store and for Firefox Add-ons, and the README notes support for 22 languages, Firefox on Android, and a document in the tree for enabling the new Comet browser. The project homepage is `cplx.app`, and the community link points at `discord.cplx.app`.

## The tree is a pnpm and turbo monorepo, not one extension folder

The default branch is `nxt` rather than `main`, which tells you the project lives on its next line of development. The root `package.json` is a workspace manifest, not an extension manifest, and it is worth reading before anything else. Its scripts are thin wrappers around turbo:

```json
"scripts": {
  "build": "turbo build",
  "dev": "turbo dev",
  "lint": "turbo lint",
  "test": "turbo test"
}
```

Task running goes through turbo 2.9.18, package versions resolve through a catalog, and the root pins `pnpm@10.25.0` with Node `^22.12.0` required through `engines`. Dependency hygiene is enforced rather than assumed: `check-deps` and `fix-deps` wrap `manypkg`, `lint-staged` runs alongside `husky`, and `workspaceProtocol` is set to `require` with `defaultBranch` recorded as `nxt` so tooling knows where releases branch from.

The tree holds `packages/`, `perplexity/`, `branding/`, `turbo.json`, `pnpm-workspace.yaml`, `.husky/`, a `LICENSE` file and a separate `TRADEMARKS.md`. The README points contributors at `./perplexity/extension/` as the contribution entry point, which suggests the extension is one package inside a larger workspace rather than the whole project. A `.gitmodules` entry is also present, so at least one dependency is tracked as a submodule.

## The release notes describe the features the README only gestures at

The three releases on record are the most concrete description of what the extension does, because the README lists capabilities only in the abstract, promising a comprehensive set of added features and UI and UX improvements with good modularity and customization.

`pplx-ext@2.9.16` on 2026-03-30 says only that it contains minor bug fixes and stability improvements. `pplx-ext@2.9.17` on 2026-04-14 is more informative. It names feature areas that read like a user-facing changelog: `Submit on Ctrl/Cmd+Enter` extended to query edit textboxes, a fix for plugins disappearing after viewport size changes, corrected language detection in `Better Code Blocks` and `Artifacts` along with a Space creation fix, `Zen Mode` now hiding the related questions section, and `Custom Themes` applying its accent colour to elements that had been missed.

`pplx-ext@2.9.18` on 2026-04-20 narrows further: the `Thread ToC` panel no longer overlaps on narrow viewports, and the accent colour fix lands properly this time. Each of the three releases carries the same warning that the attached files are digitally signed by the Chrome Web Store and Mozilla Add-ons and must not be installed from untrusted sources, which is a sensible position for a project whose model is rewriting another company's site.

Those notes also tell you what to expect when something breaks. The recurring theme is visual state failing after the host page reflows or re-renders, which is the predictable failure mode for an extension that manipulates a single page application from outside.

## MPL-2.0 for the source, a separate policy for everything else

The licensing section is unusually explicit, and the split matters if you fork this. The README states that source code in the repository is licensed under the Mozilla Public License 2.0 unless otherwise noted, and separately that the name, logos, icons, screenshots, store and listing assets and other brand assets are not covered by that license, pointing at `TRADEMARKS.md` for the detail. The `LICENSE` file in the tree and the `MPL-2.0` field in the root `package.json` agree with each other.

MPL-2.0 is file-level copyleft. Modify an MPL-covered file inside your own product and you owe the source for that file back, while the surrounding work stays under your own terms. For a browser extension distributed through store listings, that keeps the extension itself open while leaving application code around it alone, which is a reasonable fit for a project whose real value is accumulated fixes.

The trademark carve-out is the part most people skim past. The practical answer to whether you can ship your own build is that the code is fine and the name and icons are not, so a fork needs its own branding and its own store listing identity. The repository also carries `.editorconfig` and a `branding/` directory, which is consistent with assets being managed apart from source.

## Where the README stops answering

Everything above comes from the README, the tree and the release notes, and that is where the documentation ends. There is no architecture document, no contribution guide and no extension API description in the tree. The two paths that go further are the contribution entry at `./perplexity/extension/` and the Comet browser document at `./perplexity/extension/docs/comet-enable-extensions.md`.

So several practical questions are left open by the project's own files. How the extension detects Perplexity state changes, whether it depends on private DOM structure, what the `nxt` branch changes relative to the released builds, and how the `packages/` directory relates to the extension are all questions the repository does not answer on its face.

There is a second timing fact worth holding onto. The last push recorded for the repository is 2026-06-20, a little over two months after the 2026-04-20 store release. That gap on its own neither confirms nor rules out continued work. What it does mean is that installing from the stores gets you an April build, while building from `nxt` gets you code that may not match what the stores currently serve. Check which one you have before filing a bug about a feature that is missing.

## Conclusion

Complexity is a reasonable choice if you want a feature-rich Perplexity without waiting on upstream, and a poor choice if you need a stable extension API, because it works by rewriting a page another company ships and changes without notice. The repository is disciplined about the parts it controls: MPL-2.0 for source, TRADEMARKS.md carving brand assets out of that grant, a pnpm workspace with turbo scripts, and a default branch named `nxt`. Its release cadence tells its own story, with tagged builds `pplx-ext@2.9.16`, `2.9.17` and `2.9.18` landing between 2026-03-30 and 2026-04-20, while the last push recorded for the repository is 2026-06-20. The place to start reading is `turbo.json` and the extension under `perplexity/extension/`, because that is where a rewrite of someone else's DOM actually lives.

## FAQ

### Is Complexity safe to install in my browser?

The project publishes through the Chrome Web Store and Firefox Add-ons, and its release notes state that attached files are digitally signed by both stores and should not be installed from untrusted sources. Beyond that, note that the extension modifies the Perplexity AI page inside your browser, so it runs with access to that site's content in the tab you are looking at.

### Can I build Complexity from source myself?

The repository is a pnpm and turbo monorepo whose root `package.json` defines `build`, `dev`, `lint` and `test` scripts that delegate to turbo, pins `pnpm@10.25.0` and requires Node `^22.12.0`. The README names `./perplexity/extension/` as the contribution area, so that is the package to look at after installing dependencies.

### What license is the Complexity source code under?

Source code is licensed under the Mozilla Public License 2.0, and the root `package.json` records `MPL-2.0` as well. The name, logos, icons, screenshots and store assets are explicitly excluded and covered by `TRADEMARKS.md` instead, so a fork can reuse the code but needs its own branding.

## Sources

- [License: MPL-2.0](https://github.com/pnd280/complexity/blob/nxt/LICENSE)
- [pnd280/complexity on GitHub](https://github.com/pnd280/complexity)
- [Project website](https://cplx.app)
- [README](https://github.com/pnd280/complexity/blob/nxt/README.md)
- [Releases](https://github.com/pnd280/complexity/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/pnd280-complexity
