BLA
BLA (Blind LLM Agents) is the open-source Blue Defense MCP and CLI built to protect software artifacts against automated AI reverse-engineering workflows.
Spec-driven development for agentic detection engineering: an ontology and a taxonomy that keep every detection threat-aligned, maintainable and fast to ship.
SecurityJavaScript · MDXGitHub @opentidehqOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
OpenTide website and documentation (opentide.org)
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Source for the opentide web presence — deployed on GitHub Pages at opentide.org.
Built with Next.js and Fumadocs, exported as a static site for GitHub Pages.
| Section | Source | Path |
|---|---|---|
| Landing page | This repo | / |
| Documentation | Synced at build time | /docs |
| Specifications | specifications repo | /docs/specifications |
| RFCs | specifications rfcs/ | /docs/specifications/rfcs |
| Usage, CLI, MCP, SDK | opentide docs/ | /docs/{usage,cli,mcp,sdk} |
| Blog | This repo content/blog/ | /blog/ |
Documentation prose is synced from the opentide and specifications repos via pnpm sync:content and committed under content/docs/ as .mdx so Fumadocs can compile JSX and private-repo CI can build without cross-repository access. content/docs/.sync-stamp.json records the vendor SHAs; pnpm check:docs fails if those gitlinks moved without a refresh. A GitHub Actions workflow (sync-docs.yml) does this on a schedule and on repository_dispatch, then deploys — you do not need to run sync by hand after a package release.
If you clone opentide repos as siblings:
opentide/
├── opentide/
├── specifications/
└── website/ ← you are here
pnpm install
OPENTIDE_DOCS_PATH=../opentide/docs SPECIFICATIONS_PATH=../specifications pnpm dev
git submodule update --init --recursive
pnpm install
pnpm dev
Environment overrides (first match wins):
| Variable | Default candidates |
|---|---|
OPENTIDE_DOCS_PATH | vendor/opentide/docs, ../opentide/docs |
SPECIFICATIONS_PATH | vendor/specifications, ../specifications |
| Command | Description |
|---|---|
pnpm dev | Sync docs + start dev server |
pnpm fetch:pypi | Snapshot the current PyPI version for local/dev first paint |
pnpm sync:content | Copy opentide + specifications docs into content/docs/ as .mdx |
pnpm check:docs | Fail if content/docs does not match the pinned vendor gitlinks |
pnpm test | Unit tests for sync, freshness, and GitHub source URLs |
pnpm verify:demos | Run the landing demo objects through opentide validate --strict, lint --strict and a dry-run deploy (needs pip install opentide) |
pnpm build | Snapshot PyPI + sync docs + static export to out/ |
pnpm lint | ESLint |
pnpm types:check | TypeScript + Fumadocs MDX types |
Add an MDX file under content/blog/:
---
title: Your post title
description: One sentence summary for listings and SEO.
author: Your Name
date: 2026-06-25
tags:
- detection-engineering
---
Your content here.
Open a pull request. Posts appear at /blog/<filename-without-extension>/.
development branch (Fumadocs-formatted docs under docs/).../specifications when the vendor submodule is empty.Pushes to main deploy to GitHub Pages via .github/workflows/deploy.yml. Custom domain is opentide.org (public/CNAME, siteUrl in lib/shared.ts, and the Pages custom-domain field). Apex DNS is four GitHub A records plus AAAA; www CNAMEs to opentidehq.github.io. Do not attach blog.opentide.org to this Pages site — forward it to /blog/ at the registrar.
The landing page reads the current opentide version from the PyPI JSON API in the browser. Publishing a wheel does not require a website rebuild for that number to update.
Docs, changelog pages, specs, and RFCs do need a rebuild. .github/workflows/sync-docs.yml handles that without a human. RFC pages are not a separate publish step: pnpm sync:content rebuilds /docs/specifications/rfcs/ from specifications/rfcs/ (including reserved numbers that only exist in the README) every time the specifications pin moves.
repository_dispatch / workflow_dispatch) bump vendor/opentide + vendor/specificationspnpm sync:content and commit content/docs/ (including .sync-stamp.json)<Tabs>main and dispatch GitHub Pages deployA new or updated RFC in the specifications repository shows up on the site on the next hourly run. An opentide release dispatch refreshes both pins immediately. Nothing in this repository has to be edited by hand.
To notify the site immediately after a PyPI publish (optional, from opentidehq/opentide):
gh api repos/opentidehq/website/dispatches -f event_type=opentide-released
That call needs a token with repo scope on this repository. If it is not wired, the hourly schedule still picks the change up.
Licensed under the European Union Public Licence v. 1.2 (EUPL-1.2).