SPB Git

adopt: état déployé sur M2M32c adopté comme source de vérité (remote-first, 2026-11-02)

mld committed (Nov 2, 2026) Browse files

242 changed files +20,001 −0

242 changed files
added .github/workflows/ci.yml +29 −0
@@ -0,0 +1,29 @@
1+# Reference workflow (the canonical remote is spbgit, which has no runner; scripts/ci.sh runs the same gates locally and on the node).
2+name: ci
3+on: [push, pull_request]
4+jobs:
5+ test:
6+ runs-on: ubuntu-latest
7+ services:
8+ postgres:
9+ image: pgvector/pgvector:pg17
10+ env: { POSTGRES_PASSWORD: ci, POSTGRES_DB: tools_spboucher_test }
11+ ports: ["5432:5432"]
12+ options: --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 10
13+ env:
14+ DATABASE_URL: postgres://postgres:ci@localhost:5432/tools_spboucher_test
15+ DATABASE_URL_ADMIN: postgres://postgres:ci@localhost:5432/tools_spboucher_test
16+ TEST_DATABASE_URL: postgres://postgres:ci@localhost:5432/tools_spboucher_test
17+ SESSION_SECRET: ci-secret
18+ steps:
19+ - uses: actions/checkout@v4
20+ - uses: pnpm/action-setup@v4
21+ - uses: actions/setup-node@v4
22+ with: { node-version: 26, cache: pnpm }
23+ - run: pnpm install --frozen-lockfile
24+ - run: pnpm typecheck
25+ - run: pnpm content:validate
26+ - run: pnpm db:migrate
27+ - run: pnpm test
28+ - run: pnpm content:import --publish && pnpm eval:ranking
29+ - run: pnpm audit --prod --audit-level high || true
added .gitignore +16 −0
@@ -0,0 +1,16 @@
1+node_modules/
2+.next/
3+out/
4+.env
5+.env.*
6+!.env.example
7+backups/
8+exports/*.json
9+exports/*.csv
10+!exports/.gitkeep
11+test-results/
12+playwright-report/
13+tsconfig.tsbuildinfo
14+.DS_Store
15+*.log
16+docs/_agent-brief.md
added AGENTS.md +9 −0
@@ -0,0 +1,9 @@
1+<!-- BEGIN:nextjs-agent-rules -->
2+
3+## This is NOT the Next.js you know
4+
5+This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
6+
7+This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
8+
9+<!-- END:nextjs-agent-rules -->
added CLAUDE.md +18 −0
@@ -0,0 +1,18 @@
1+# CLAUDE.md — tools.spboucher.ai
2+
3+Curated encyclopedia of tools (public) + owner inventory (private). Stack: Next.js 16 App Router, React 19, Tailwind 4, PostgreSQL 17, Drizzle (snake_case casing), postgres-js, Vitest, Playwright. Port 8540.
4+
5+## Non-negotiables
6+- **Public ≠ private at the DB layer.** Public code uses `sqlPublic` (role `tools_reader`, SELECT on `public_tools` view only). Never import `sql`/`db` from `src/db` into anything under `src/lib/public` or public routes. Owner tables (`owner_notes`, `projects`) are never joined into public queries.
7+- **Every admin mutation** goes through `requireUser(req)` (session + MFA + same-origin + `x-csrf-token`) and writes `audit_log` (+ `tool_revisions` for records). Never add client-only protection.
8+- **Evidence rules** (`docs/editorial-guide.md`, `docs/source-policy.md`): no prices, no certifications without a policy source, no benchmark claims, no copied vendor text, `checked_at` only for pages actually loaded. Run `pnpm content:validate` after editing `content/`.
9+- **Outbound HTTP only via `safeFetch`** (SSRF guard). Fetched text is untrusted; AI output must be zod-validated and never auto-saved.
10+- **Secrets** only in `.env` on the node (600) and `~/Desktop/Cluster/secrets/tools-spboucher-ai/`. Never in git, manifests, logs or chat.
11+- **Migrations**: add a new `drizzle/NNNN_*.sql`; never edit applied files (checksums). Mirror changes in `src/db/schema.ts`. Recreating the `public_tools` view requires re-granting to `tools_reader`.
12+- Drizzle hijacks postgres-js serializers → the raw `sql` clients use their own pools (see `src/db/index.ts`). Use `sql.json(x)` for jsonb params.
13+
14+## Workflow
15+`pnpm typecheck && pnpm test && pnpm content:validate` before committing. E2E/a11y/security scripts need a running server (`pnpm dev` or production). Remote-first after deploy: edit on `M2M32c:~/apps/tools-spboucher-ai`, `pnpm build && pm2 restart tools-web tools-worker`, commit/push there (`docs/deployment.md`).
16+
17+## Content authoring
18+One JSON per tool in `content/tools/<slug>.json` matching `src/lib/content/schema.ts`; deep records 100–300 words, ≥3 sources, ≥2 alternatives, comparison notes. Categories are leaf slugs from `content/categories.json`; alternatives are existing slugs. Private records → `content/private/` with `visibility: private`. Owner relevance → `content/owner/relevance.json`.
added README.md +51 −0
@@ -0,0 +1,51 @@
1+# tools.spboucher.ai — Tool Atlas
2+
3+A curated, source-cited encyclopedia of software, AI systems, APIs, data platforms, developer tools and academic tools, with a private owner inventory. Next.js 16 · React 19 · Tailwind 4 · PostgreSQL 17 (full-text + trigram + optional pgvector) · Drizzle · TypeScript. Hosted on MacLustr (node M2M32c) behind the MacLustr Tunnel.
4+
5+**Live:** https://tools.spboucher.ai · **Admin:** https://tools.spboucher.ai/admin (owner only)
6+
7+## Product
8+- Public: homepage, directory with hybrid search (lexical + typo tolerance, optional semantic), faceted filters with shareable URLs, tool pages with evidence/sources/link verification, categories (8 → 66), collections, side-by-side compare (2–5), error reports, SEO (SSR, sitemap, JSON-LD), WCAG 2.2 AA target, dark/light.
9+- Owner/admin: passkeys + TOTP, record editor (form or raw JSON), review queue (reviewed records, automated flags, reports), duplicate merge, bulk CSV/JSON import, role-scoped export, link-integrity dashboard, job queue & crawler schedule, owner dashboard (active/testing/candidate/archived/rejected, projects, private notes & deployment links), audit log, sessions.
10+- Pipeline: content files → validator → import (idempotent, revisions) → publish gate → worker (link checks, source rescans, freshness flags, embeddings, encrypted backups).
11+
12+## Repository layout
13+```
14+content/ seed content: categories.json, tools/*.json (public), private/*.json, collections/*.json, owner/*.json
15+drizzle/ SQL migrations (source of truth), applied by scripts/migrate.ts
16+src/app Next.js routes: (public), (auth)/login, admin, api
17+src/lib/public read-only queries (tools_reader role) src/lib/admin editorial mutations
18+src/lib/content zod schema + import src/lib/jobs queue, handlers, backup
19+src/lib/auth sessions, passwords, guards, limiter src/lib/ai provider adapter (optional)
20+src/worker background worker scripts/ ops & audits
21+tests/unit, tests/integration (vitest) · tests/e2e (Playwright) · docs/ · infra/mld (manifest)
22+```
23+
24+## Local development
25+```bash
26+pnpm install
27+createdb tools_spboucher_dev && createdb tools_spboucher_test
28+cp .env.example .env # fill DATABASE_URL_ADMIN=postgres://localhost:5432/tools_spboucher_dev, then:
29+DATABASE_URL_ADMIN=postgres://localhost:5432/tools_spboucher_dev pnpm db:roles # prints role passwords → put in .env
30+pnpm db:migrate && pnpm content:validate && pnpm content:import --publish && pnpm bootstrap
31+pnpm dev # http://localhost:8540 ; worker: pnpm worker
32+```
33+Requires PostgreSQL 17 with `pg_trgm`, `unaccent`, `pgcrypto` (bundled) and optionally `vector` (pgvector).
34+
35+## Commands
36+| | |
37+|---|---|
38+| `pnpm content:validate` | schema + editorial rules over `content/` |
39+| `pnpm content:import [--publish] [--force] [slug…]` | deterministic upsert |
40+| `pnpm content:export` | `exports/tools-public.{json,csv}` |
41+| `pnpm links:check [--sample N]` | synchronous link audit |
42+| `pnpm worker` | background jobs |
43+| `pnpm backup` / `pnpm restore:drill` | encrypted dump / restore into a temp DB and compare |
44+| `pnpm test` · `pnpm test:e2e` · `pnpm test:a11y` · `pnpm test:security` · `pnpm eval:ranking` | quality gates |
45+| `scripts/ci.sh` | everything above in order (used before each release) |
46+
47+## Production
48+See `docs/deployment.md` (mld manifest, node prep, release, rollback, backups) and `docs/security.md`. Remote-first: after the first deploy the node directory `M2M32c:~/apps/tools-spboucher-ai` is the canonical git clone (origin spbgit).
49+
50+## Documentation
51+`docs/discovery.md` · `data-model.md` · `taxonomy.md` · `source-policy.md` · `ingestion.md` · `security.md` · `deployment.md` · `verification.md` · `editorial-guide.md` · `roadmap.md`
added content/categories.json +89 −0
@@ -0,0 +1,89 @@
1+[
2+ {"slug":"ai","name":"Artificial Intelligence","description":"Models, assistants, inference engines, agent frameworks and the tooling around them.","children":[
3+ {"slug":"ai-assistants","name":"AI assistants & chat","description":"End-user conversational assistants and chat products."},
4+ {"slug":"model-providers","name":"Model providers & APIs","description":"Hosted foundation-model APIs and developer platforms."},
5+ {"slug":"local-inference","name":"Local LLM inference & serving","description":"Running and serving models on your own hardware."},
6+ {"slug":"model-training","name":"Training & fine-tuning","description":"Libraries and services for training, fine-tuning and distributing models."},
7+ {"slug":"agent-frameworks","name":"Agent frameworks & orchestration","description":"Frameworks for building tool-using, multi-step LLM applications and agents."},
8+ {"slug":"coding-agents","name":"Coding agents & AI IDEs","description":"AI pair programmers, autonomous coding agents and AI-native editors."},
9+ {"slug":"llm-ops","name":"Prompting, evaluation & observability","description":"Prompt management, evaluation harnesses, tracing and LLM observability."},
10+ {"slug":"embeddings-vector-search","name":"Embeddings, reranking & retrieval","description":"Embedding models, rerankers and retrieval building blocks."},
11+ {"slug":"speech-vision-multimodal","name":"Voice, vision & multimodal AI","description":"Speech, image, video and multimodal models and tools."}
12+ ]},
13+ {"slug":"software-development","name":"Software development","description":"Languages, editors, terminals, version control, CI/CD, testing and documentation.","children":[
14+ {"slug":"programming-languages","name":"Programming languages & runtimes","description":"Languages, runtimes and package managers."},
15+ {"slug":"ide-editors","name":"IDEs & editors","description":"Integrated development environments and code editors."},
16+ {"slug":"terminals-shells","name":"Terminals & shells","description":"Terminal emulators, shells, multiplexers and prompt tooling."},
17+ {"slug":"version-control","name":"Version control & code hosting","description":"Git tooling and code-hosting forges."},
18+ {"slug":"ci-cd","name":"CI/CD & build automation","description":"Continuous integration, delivery and build systems."},
19+ {"slug":"testing-qa","name":"Testing & QA","description":"Unit, integration, end-to-end and accessibility testing tools."},
20+ {"slug":"documentation","name":"Documentation tooling","description":"Static site generators and documentation systems for software."},
21+ {"slug":"api-development","name":"API development & tooling","description":"Frameworks, specification tools and clients for building and consuming APIs."},
22+ {"slug":"web-frameworks","name":"Web frameworks & UI","description":"Front-end and full-stack web frameworks, styling and component systems."}
23+ ]},
24+ {"slug":"infrastructure","name":"Infrastructure & operations","description":"Containers, provisioning, networking, security, identity and backup.","children":[
25+ {"slug":"containers-virtualization","name":"Containers & virtualization","description":"Container runtimes, orchestration and virtual machines."},
26+ {"slug":"infrastructure-provisioning","name":"Infrastructure & provisioning","description":"Infrastructure-as-code, configuration management and process supervision."},
27+ {"slug":"reverse-proxies-web-servers","name":"Reverse proxies & web servers","description":"HTTP servers, reverse proxies and TLS automation."},
28+ {"slug":"dns-domains","name":"DNS & domains","description":"Registrars, DNS providers and certificate authorities."},
29+ {"slug":"tunneling-remote-access","name":"Tunneling & remote access","description":"VPNs, overlay networks, tunnels and remote shells."},
30+ {"slug":"monitoring-observability","name":"Monitoring & observability","description":"Metrics, logs, traces, uptime and alerting."},
31+ {"slug":"security-tools","name":"Security tools","description":"Scanners, hardening and application-security tooling."},
32+ {"slug":"identity-access","name":"Identity & access","description":"Authentication, authorization, passkeys and SSO."},
33+ {"slug":"secrets-management","name":"Secrets management","description":"Vaults, key management and secret distribution."},
34+ {"slug":"backup-recovery","name":"Backup & recovery","description":"Backup, snapshot and restore tooling."},
35+ {"slug":"cloud-hosting","name":"Cloud & hosting providers","description":"Cloud platforms, dedicated servers and hosting services."}
36+ ]},
37+ {"slug":"apple","name":"Apple platforms & Apple Silicon","description":"macOS automation, Apple Silicon machine learning, Swift and distributed Mac computing.","children":[
38+ {"slug":"macos-automation","name":"macOS automation","description":"Scripting, scheduling and automation on macOS."},
39+ {"slug":"apple-silicon-ml","name":"Apple Silicon ML & MLX","description":"Machine-learning frameworks and runtimes optimised for Apple Silicon."},
40+ {"slug":"swift-development","name":"Swift & SwiftUI development","description":"Swift language, SwiftUI and Apple developer tooling."},
41+ {"slug":"macos-utilities","name":"macOS system utilities","description":"System tools, package managers and utilities for macOS."},
42+ {"slug":"distributed-computing","name":"Distributed & parallel computing","description":"Frameworks and schedulers for distributing work across machines."}
43+ ]},
44+ {"slug":"data","name":"Data engineering & databases","description":"Collecting, moving, storing, querying, visualising and validating data.","children":[
45+ {"slug":"data-collection-crawling","name":"Data collection & crawling","description":"Crawlers, scrapers, browser automation and extraction services."},
46+ {"slug":"search-apis","name":"Search & web-data APIs","description":"Web search, news and answer APIs for applications and agents."},
47+ {"slug":"web-archiving","name":"Web archiving","description":"Capturing, preserving and replaying web content."},
48+ {"slug":"etl-elt","name":"ETL/ELT & orchestration","description":"Pipelines, transformations and workflow orchestration."},
49+ {"slug":"messaging-queues","name":"Messaging & queues","description":"Message brokers, streaming platforms and job queues."},
50+ {"slug":"relational-databases","name":"Relational databases","description":"SQL databases and their extensions."},
51+ {"slug":"nosql-databases","name":"NoSQL & key-value stores","description":"Document, key-value, graph and wide-column stores."},
52+ {"slug":"vector-databases","name":"Vector databases","description":"Purpose-built vector stores and similarity search engines."},
53+ {"slug":"analytics-engines","name":"Analytical engines & OLAP","description":"Columnar engines, query engines and in-process analytics."},
54+ {"slug":"dataframes-arrays","name":"DataFrames & array computing","description":"In-memory tabular and array libraries."},
55+ {"slug":"bi-dashboards","name":"BI & dashboards","description":"Business-intelligence and dashboarding platforms."},
56+ {"slug":"notebooks","name":"Notebooks & interactive computing","description":"Computational notebooks and literate programming environments."},
57+ {"slug":"data-catalogs","name":"Data catalogs & formats","description":"Catalogs, table formats and metadata management."},
58+ {"slug":"data-visualization","name":"Data visualization","description":"Charting and visualization libraries and tools."},
59+ {"slug":"data-quality","name":"Data quality & validation","description":"Schema validation, testing and quality monitoring for data."}
60+ ]},
61+ {"slug":"research","name":"Academic research","description":"Discovery, writing, typesetting, statistics, econometrics and financial research data.","children":[
62+ {"slug":"academic-discovery","name":"Literature discovery & review","description":"Scholarly search engines, graphs and review assistants."},
63+ {"slug":"citation-management","name":"Citation management","description":"Reference managers and bibliography tooling."},
64+ {"slug":"latex-typesetting","name":"LaTeX & typesetting","description":"TeX distributions, editors and document converters."},
65+ {"slug":"academic-writing","name":"Academic writing & publishing","description":"Writing environments, reproducible documents and manuscript tooling."},
66+ {"slug":"math-stats-tools","name":"Mathematical & statistical computing","description":"Statistical languages, environments and numerical libraries."},
67+ {"slug":"reproducibility","name":"Reproducibility & research software","description":"Environments, registries and tooling for reproducible research."},
68+ {"slug":"econometrics-causal-inference","name":"Econometrics & causal inference","description":"Econometric and causal-inference libraries and packages."},
69+ {"slug":"hf-finance-research","name":"High-frequency financial analysis","description":"Intraday data handling, microstructure and time-series tooling."},
70+ {"slug":"market-data-apis","name":"Market & fundamentals data","description":"Price, fundamentals and macroeconomic data providers."},
71+ {"slug":"sec-filings","name":"SEC/EDGAR & corporate filings","description":"Regulatory filings access and parsing."},
72+ {"slug":"research-dissemination","name":"Research dissemination","description":"Preprint servers, repositories and identifiers."}
73+ ]},
74+ {"slug":"finance-business","name":"Finance, real estate & business","description":"Investing, portfolios, property valuation, GIS, construction and business systems.","children":[
75+ {"slug":"financial-analysis-investing","name":"Financial analysis & investing","description":"Analysis platforms, backtesting and quantitative finance libraries."},
76+ {"slug":"portfolio-management","name":"Portfolio & wealth management","description":"Portfolio tracking, optimisation and risk."},
77+ {"slug":"real-estate-valuation","name":"Real estate valuation & property data","description":"Appraisal, hedonic modelling, listings and property registries."},
78+ {"slug":"gis-mapping","name":"GIS & mapping","description":"Geographic information systems, map data and geospatial libraries."},
79+ {"slug":"construction-estimating","name":"Construction estimating & quantity surveying","description":"Cost databases, takeoff and estimating software."},
80+ {"slug":"open-public-data","name":"Open & public data","description":"Government statistics, open-data portals and public datasets."},
81+ {"slug":"crm-business","name":"CRM & business operations","description":"Customer relationship, invoicing and operations tooling."}
82+ ]},
83+ {"slug":"productivity","name":"Productivity & knowledge","description":"Notes, knowledge management, design and collaboration.","children":[
84+ {"slug":"productivity-suites","name":"Productivity suites & task management","description":"Office suites, calendars, tasks and automation."},
85+ {"slug":"knowledge-management","name":"Personal knowledge management","description":"Note-taking and knowledge-graph tools."},
86+ {"slug":"design-prototyping","name":"Design & prototyping","description":"UI design, diagramming and prototyping."},
87+ {"slug":"collaboration-communication","name":"Collaboration & communication","description":"Chat, video and team collaboration."}
88+ ]}
89+]
added content/collections/academic-writing.json +18 −0
@@ -0,0 +1,18 @@
1+{"slug":"academic-writing","title":"Academic Writing","published":true,
2+ "description":"From literature search to a submitted manuscript: discovery engines, a reference manager, a TeX distribution and editor, reproducible-document tooling, converters for the Word-only journal, and the identifiers and repositories that make the output citable.",
3+ "items":[
4+ {"tool":"openalex","blurb":"Open scholarly graph with a free API; a good first stop for systematic searches."},
5+ {"tool":"semantic-scholar","blurb":"AI-assisted paper discovery, citation contexts and an API."},
6+ {"tool":"google-scholar","blurb":"Broad coverage and citation counts, with no API."},
7+ {"tool":"zotero","blurb":"Free reference manager with browser capture, PDF annotation and BibTeX/Better BibTeX export."},
8+ {"tool":"tex-live","blurb":"The full TeX distribution; the baseline for any LaTeX workflow."},
9+ {"tool":"overleaf","blurb":"Collaborative online LaTeX editing with track changes and journal templates."},
10+ {"tool":"biblatex","blurb":"Modern bibliography handling for LaTeX with Biber."},
11+ {"tool":"quarto","blurb":"Reproducible documents mixing prose with Python, R or Julia code; renders to PDF, HTML and Word."},
12+ {"tool":"pandoc","blurb":"The universal converter; turns LaTeX into Word when a journal insists."},
13+ {"tool":"typst","blurb":"A fast, modern typesetting system worth watching as an alternative to LaTeX."},
14+ {"tool":"ssrn","blurb":"Working-paper distribution in economics, finance and law."},
15+ {"tool":"arxiv","blurb":"Preprints for quantitative fields."},
16+ {"tool":"orcid","blurb":"A persistent researcher identifier required by most publishers."},
17+ {"tool":"zenodo","blurb":"DOIs for datasets, code and supplementary material."}
18+ ]}
added content/collections/apple-silicon-ai.json +14 −0
@@ -0,0 +1,14 @@
1+{"slug":"apple-silicon-ai","title":"Apple Silicon AI","published":true,
2+ "description":"Running and serving language, speech and vision models on Macs with M-series chips, from the array framework up to the applications that wrap it. Useful for anyone building a local or cluster-based inference setup on macOS rather than renting GPUs.",
3+ "items":[
4+ {"tool":"mlx","blurb":"Apple's array framework with unified-memory semantics; the foundation for most native Apple Silicon ML work."},
5+ {"tool":"mlx-lm","blurb":"Generation, quantization and fine-tuning of language models on top of MLX, with Hugging Face Hub integration."},
6+ {"tool":"mlx-whisper","blurb":"Speech-to-text with Whisper models ported to MLX; practical for transcribing lectures and meetings locally."},
7+ {"tool":"llama-cpp","blurb":"Portable C/C++ inference with Metal acceleration and the GGUF format; the other mature path for local LLMs on a Mac."},
8+ {"tool":"ollama","blurb":"The simplest way to pull and serve open models locally behind an HTTP API."},
9+ {"tool":"lm-studio","blurb":"Desktop application for discovering, downloading and chatting with local models."},
10+ {"tool":"core-ml","blurb":"Apple's on-device inference framework for shipping models inside macOS and iOS apps."},
11+ {"tool":"apple-foundation-models","blurb":"The system language model exposed to Swift apps on Apple platforms."},
12+ {"tool":"hugging-face-hub","blurb":"Where the model weights come from; MLX and GGUF conversions are published there."},
13+ {"tool":"exo","blurb":"Experimental distributed inference across several Apple devices."}
14+ ]}
added content/collections/evidence-based-llm-development.json +17 −0
@@ -0,0 +1,17 @@
1+{"slug":"evidence-based-llm-development","title":"Evidence-Based LLM Development","published":true,
2+ "description":"Building LLM applications that can be measured: model APIs, retrieval components, and the evaluation and observability layer that turns prompt tinkering into something closer to engineering.",
3+ "items":[
4+ {"tool":"claude-developer-platform","blurb":"Anthropic's API and developer tooling."},
5+ {"tool":"openai-platform","blurb":"OpenAI's API and developer platform."},
6+ {"tool":"openrouter","blurb":"Many providers behind one API, useful for model comparisons."},
7+ {"tool":"sentence-transformers","blurb":"Embedding and reranking models you can run yourself."},
8+ {"tool":"voyage-ai","blurb":"Hosted embeddings and rerankers."},
9+ {"tool":"pgvector","blurb":"Vector similarity inside PostgreSQL, often enough instead of a separate store."},
10+ {"tool":"qdrant","blurb":"Dedicated vector database when filtering and scale demand it."},
11+ {"tool":"ragas","blurb":"Metrics for retrieval-augmented generation pipelines."},
12+ {"tool":"promptfoo","blurb":"Declarative test suites for prompts, models and agents."},
13+ {"tool":"langfuse","blurb":"Tracing, datasets and evaluations, self-hostable."},
14+ {"tool":"braintrust","blurb":"Hosted evaluation and logging platform."},
15+ {"tool":"dspy","blurb":"Programmatic prompt optimization against a metric."},
16+ {"tool":"instructor","blurb":"Structured, validated outputs from any model."}
17+ ]}
added content/collections/high-frequency-finance-research.json +17 −0
@@ -0,0 +1,17 @@
1+{"slug":"high-frequency-finance-research","title":"High-Frequency Finance Research","published":true,
2+ "description":"A working stack for intraday market-microstructure and asset-pricing research: where the minute bars and fundamentals come from, how to store tens of billions of rows on one machine, and which libraries carry the econometrics. Assembled from tools used in academic finance work rather than trading.",
3+ "items":[
4+ {"tool":"firstrate-data","blurb":"Bulk intraday bars and fundamentals for US equities, ETFs, futures and FX; the primary raw input."},
5+ {"tool":"databento","blurb":"Normalized tick and order-book data with point-in-time symbology for exchange-level research."},
6+ {"tool":"polygon-io","blurb":"REST and streaming market data with a developer-friendly API."},
7+ {"tool":"sec-edgar","blurb":"Filings, XBRL facts and full-text search from the SEC's own public APIs."},
8+ {"tool":"fred","blurb":"Macro series from the St. Louis Fed for event studies and controls."},
9+ {"tool":"apache-parquet","blurb":"The columnar on-disk format for a multi-terabyte bar archive."},
10+ {"tool":"duckdb","blurb":"Query a Parquet lake with SQL from a notebook without a database server."},
11+ {"tool":"polars","blurb":"Fast DataFrame transformations over Arrow memory for resampling and feature construction."},
12+ {"tool":"clickhouse","blurb":"When a single node is not enough: a columnar server for tick-level aggregations."},
13+ {"tool":"arch","blurb":"Volatility models and bootstrap methods for realized-variance work."},
14+ {"tool":"statsmodels","blurb":"Regression, time-series and robust inference in Python."},
15+ {"tool":"linearmodels","blurb":"Panel, IV and asset-pricing (Fama–MacBeth) estimators missing from statsmodels."},
16+ {"tool":"jupyter","blurb":"The notebook environment that ties the exploration together."}
17+ ]}
added content/collections/macos-developer-workstation.json +18 −0
@@ -0,0 +1,18 @@
1+{"slug":"macos-developer-workstation","title":"macOS Developer Workstation","published":true,
2+ "description":"A pragmatic setup for software and data work on a Mac: package management, a terminal and shell prompt, editors, version control, container runtime, automation and launcher utilities. Nothing exotic, everything maintained.",
3+ "items":[
4+ {"tool":"homebrew","blurb":"Package manager for everything that is not an app bundle."},
5+ {"tool":"ghostty","blurb":"Fast native terminal emulator."},
6+ {"tool":"tmux","blurb":"Persistent terminal sessions, especially over SSH."},
7+ {"tool":"starship","blurb":"Informative, fast shell prompt."},
8+ {"tool":"vs-code","blurb":"The default editor for most languages, with a large extension ecosystem."},
9+ {"tool":"zed","blurb":"A lighter, native editor with built-in collaboration and AI features."},
10+ {"tool":"xcode","blurb":"Required for Apple-platform builds and for the command-line developer tools."},
11+ {"tool":"git","blurb":"Version control."},
12+ {"tool":"orbstack","blurb":"Lightweight Docker and Linux VMs on Apple Silicon."},
13+ {"tool":"uv","blurb":"Python environments and packages, fast and reproducible."},
14+ {"tool":"raycast","blurb":"Launcher and command palette for the whole system."},
15+ {"tool":"hammerspoon","blurb":"Lua-scriptable window and system automation."},
16+ {"tool":"launchd","blurb":"The system's own scheduler for agents and daemons."},
17+ {"tool":"1password","blurb":"Credentials, SSH keys and the SSH agent."}
18+ ]}
added content/collections/real-estate-valuation-stack.json +17 −0
@@ -0,0 +1,17 @@
1+{"slug":"real-estate-valuation-stack","title":"Real Estate Valuation Stack","published":true,
2+ "description":"Tools for appraisal and property-market research in Québec and beyond: public registries and assessment rolls, listing portals, spatial analysis, cost data for the cost approach, and the statistical libraries behind hedonic and comparable-sales models.",
3+ "items":[
4+ {"tool":"role-evaluation-fonciere-quebec","blurb":"Municipal assessment rolls, the backbone of mass-appraisal datasets in Québec."},
5+ {"tool":"registre-foncier-quebec","blurb":"Deeds, mortgages and transfer prices from the provincial land register."},
6+ {"tool":"centris","blurb":"Listing portal of Québec real-estate brokers; the reference for asking prices."},
7+ {"tool":"realtor-ca","blurb":"The Canada-wide MLS listing portal."},
8+ {"tool":"qgis","blurb":"Desktop GIS for neighbourhood delineation, buffers and map output."},
9+ {"tool":"postgis","blurb":"Spatial SQL for joining sales to parcels, zones and distances."},
10+ {"tool":"openstreetmap","blurb":"Open map data for amenities, roads and footprints."},
11+ {"tool":"geopandas","blurb":"Spatial DataFrames for Python-based modelling."},
12+ {"tool":"rsmeans-data","blurb":"Construction cost data for the cost approach and depreciation analysis."},
13+ {"tool":"statistics-canada","blurb":"Census and housing statistics at the dissemination-area level."},
14+ {"tool":"statsmodels","blurb":"Hedonic regressions with robust standard errors."},
15+ {"tool":"scikit-learn","blurb":"Machine-learning baselines and cross-validation for automated valuation models."},
16+ {"tool":"duckdb","blurb":"Fast local SQL over years of transactions exported to Parquet."}
17+ ]}
added content/collections/self-hosted-agent-infrastructure.json +18 −0
@@ -0,0 +1,18 @@
1+{"slug":"self-hosted-agent-infrastructure","title":"Self-Hosted Agent Infrastructure","published":true,
2+ "description":"Running LLM agents on hardware you control: a coding agent, the protocol that connects it to tools, frameworks for multi-step workflows, local or hosted model access through one interface, observability, and the plumbing (process supervision, reverse proxy, tunnel, secrets) that keeps it reachable and safe.",
3+ "items":[
4+ {"tool":"claude-code","blurb":"Terminal-native coding agent that reads a repository, runs commands and edits files under instruction."},
5+ {"tool":"model-context-protocol","blurb":"Open standard for exposing tools and data to agents; servers can run locally on the same machine."},
6+ {"tool":"langgraph","blurb":"Graph-based orchestration for stateful, resumable agent workflows."},
7+ {"tool":"pydantic-ai","blurb":"Typed, minimal agent framework for Python with structured outputs."},
8+ {"tool":"litellm","blurb":"One OpenAI-compatible interface in front of hosted and local models, with budgets and keys."},
9+ {"tool":"ollama","blurb":"Local model serving for the parts of a workflow that should not leave the machine."},
10+ {"tool":"vllm","blurb":"High-throughput serving when a GPU server is available."},
11+ {"tool":"langfuse","blurb":"Self-hostable tracing, evaluation and cost tracking for LLM applications."},
12+ {"tool":"promptfoo","blurb":"Test prompts and agents like code, in CI."},
13+ {"tool":"pm2","blurb":"Keeps long-running Node processes and workers alive."},
14+ {"tool":"caddy","blurb":"Reverse proxy with automatic HTTPS in front of every service."},
15+ {"tool":"wireguard","blurb":"The tunnel between a public gateway and private machines."},
16+ {"tool":"tailscale","blurb":"Zero-configuration mesh networking when WireGuard by hand is too much."},
17+ {"tool":"1password","blurb":"Secrets and API keys kept out of configuration files and prompts."}
18+ ]}
added content/owner/projects.json +9 −0
@@ -0,0 +1,9 @@
1+[
2+ {"slug":"maclustr","name":"MacLustr","description":"Heterogeneous Apple Silicon cluster (29 Macs) with an OVH gateway, WireGuard tunnel and PM2-based app dispatch."},
3+ {"slug":"uqo-teaching","name":"UQO teaching","description":"Real-estate appraisal courses (IMM1003, IMM1033): course sites, evaluation platform, exams and grading."},
4+ {"slug":"research-papers","name":"Research working papers","description":"UQO working-paper series: econometrics, housing, AI, high-frequency finance."},
5+ {"slug":"groupe-ka","name":"Groupe Ka","description":"Family of Québec consumer data platforms (housing, cars, food, jobs, events)."},
6+ {"slug":"findata","name":"FinData OS","description":"Private FirstRate Data lakehouse (Parquet + DuckDB + Postgres) for intraday research."},
7+ {"slug":"spboucher-ai-apps","name":"spboucher.ai applications","description":"Personal platforms: chat, note, AKOS, git, cloud, tools."},
8+ {"slug":"apple-apps","name":"Apple apps","description":"Native macOS/iOS applications (MacLustr, Admin-Ka, Ka, NEXTERM) built with Swift and Xcode."}
9+]
added content/owner/relevance.json +594 −0
@@ -0,0 +1,594 @@
1+[
2+ {
3+ "tool": "claude-code",
4+ "use_state": "active",
5+ "rating": 5,
6+ "priority": "high",
7+ "cluster_compat": "yes",
8+ "projects": [
9+ "maclustr",
10+ "research-papers",
11+ "spboucher-ai-apps",
12+ "uqo-teaching"
13+ ],
14+ "notes": "Primary development agent for every project; operates the cluster over SSH and writes most code and documents."
15+ },
16+ {
17+ "tool": "claude-developer-platform",
18+ "use_state": "active",
19+ "rating": 5,
20+ "priority": "high",
21+ "cluster_compat": "yes",
22+ "projects": [
23+ "spboucher-ai-apps",
24+ "groupe-ka"
25+ ],
26+ "subscription_status": "API account",
27+ "notes": "Default provider for chat/note/agents; keys held in per-app .env files on nodes."
28+ },
29+ {
30+ "tool": "openai-platform",
31+ "use_state": "active",
32+ "rating": 4,
33+ "priority": "high",
34+ "cluster_compat": "yes",
35+ "projects": [
36+ "spboucher-ai-apps"
37+ ],
38+ "subscription_status": "API account",
39+ "notes": "Second provider; embeddings and selected models benchmarked in chat/note Phase Zero."
40+ },
41+ {
42+ "tool": "nextjs",
43+ "use_state": "active",
44+ "rating": 5,
45+ "priority": "high",
46+ "cluster_compat": "yes",
47+ "projects": [
48+ "spboucher-ai-apps",
49+ "groupe-ka",
50+ "uqo-teaching"
51+ ],
52+ "notes": "Framework for almost every web app on the cluster."
53+ },
54+ {
55+ "tool": "postgresql",
56+ "use_state": "active",
57+ "rating": 5,
58+ "priority": "high",
59+ "cluster_compat": "yes",
60+ "projects": [
61+ "spboucher-ai-apps",
62+ "groupe-ka",
63+ "findata"
64+ ],
65+ "notes": "Homebrew Postgres 17 on each app node; localhost only."
66+ },
67+ {
68+ "tool": "pgvector",
69+ "use_state": "active",
70+ "rating": 4,
71+ "priority": "medium",
72+ "cluster_compat": "yes",
73+ "projects": [
74+ "spboucher-ai-apps"
75+ ]
76+ },
77+ {
78+ "tool": "drizzle-orm",
79+ "use_state": "active",
80+ "rating": 4,
81+ "priority": "medium",
82+ "cluster_compat": "yes",
83+ "projects": [
84+ "spboucher-ai-apps"
85+ ],
86+ "notes": "snake_case casing mandatory; SQL migrations kept as source of truth."
87+ },
88+ {
89+ "tool": "pm2",
90+ "use_state": "active",
91+ "rating": 4,
92+ "priority": "high",
93+ "cluster_compat": "yes",
94+ "projects": [
95+ "maclustr"
96+ ],
97+ "notes": "Process supervisor for every mld-deployed app."
98+ },
99+ {
100+ "tool": "caddy",
101+ "use_state": "active",
102+ "rating": 5,
103+ "priority": "high",
104+ "cluster_compat": "yes",
105+ "projects": [
106+ "maclustr"
107+ ],
108+ "notes": "TLS termination on the OVH gateway; routes managed by tunnelctl/mld."
109+ },
110+ {
111+ "tool": "wireguard",
112+ "use_state": "active",
113+ "rating": 5,
114+ "priority": "high",
115+ "cluster_compat": "yes",
116+ "projects": [
117+ "maclustr"
118+ ],
119+ "notes": "wg1 overlay between BHS64 and the Macs; UDP 443 fallback because the LAN router blocks 51820."
120+ },
121+ {
122+ "tool": "tailscale",
123+ "use_state": "active",
124+ "rating": 4,
125+ "priority": "medium",
126+ "cluster_compat": "partial",
127+ "projects": [
128+ "maclustr"
129+ ],
130+ "notes": "Laptop-to-node access only; inter-node SSH over Tailscale blocked by ACL."
131+ },
132+ {
133+ "tool": "homebrew",
134+ "use_state": "active",
135+ "rating": 5,
136+ "priority": "high",
137+ "cluster_compat": "yes",
138+ "projects": [
139+ "maclustr"
140+ ]
141+ },
142+ {
143+ "tool": "openssh",
144+ "use_state": "active",
145+ "rating": 5,
146+ "priority": "high",
147+ "cluster_compat": "yes",
148+ "projects": [
149+ "maclustr"
150+ ]
151+ },
152+ {
153+ "tool": "git",
154+ "use_state": "active",
155+ "rating": 5,
156+ "priority": "high",
157+ "cluster_compat": "yes",
158+ "projects": [
159+ "maclustr",
160+ "spboucher-ai-apps"
161+ ],
162+ "notes": "Self-hosted bare repos on the gateway (spbgit); GitHub account suspended, not used."
163+ },
164+ {
165+ "tool": "github",
166+ "use_state": "archived",
167+ "rating": 2,
168+ "priority": "low",
169+ "cluster_compat": "unknown",
170+ "notes": "Account suspended; remotes renamed old-origin. Kept for reading public repositories only."
171+ },
172+ {
173+ "tool": "docker",
174+ "use_state": "testing",
175+ "rating": 3,
176+ "priority": "low",
177+ "cluster_compat": "partial",
178+ "projects": [
179+ "maclustr"
180+ ],
181+ "notes": "Installed on a few nodes; most apps run natively under PM2 instead."
182+ },
183+ {
184+ "tool": "playwright",
185+ "use_state": "active",
186+ "rating": 5,
187+ "priority": "medium",
188+ "cluster_compat": "yes",
189+ "projects": [
190+ "spboucher-ai-apps",
191+ "groupe-ka"
192+ ],
193+ "notes": "E2E tests and screenshots; also drives Safari-like automation for admin tasks."
194+ },
195+ {
196+ "tool": "vitest",
197+ "use_state": "active",
198+ "rating": 4,
199+ "priority": "medium",
200+ "cluster_compat": "yes",
201+ "projects": [
202+ "spboucher-ai-apps"
203+ ]
204+ },
205+ {
206+ "tool": "typescript",
207+ "use_state": "active",
208+ "rating": 5,
209+ "priority": "high",
210+ "cluster_compat": "yes",
211+ "projects": [
212+ "spboucher-ai-apps",
213+ "groupe-ka"
214+ ]
215+ },
216+ {
217+ "tool": "python",
218+ "use_state": "active",
219+ "rating": 5,
220+ "priority": "high",
221+ "cluster_compat": "yes",
222+ "projects": [
223+ "research-papers",
224+ "findata"
225+ ]
226+ },
227+ {
228+ "tool": "uv",
229+ "use_state": "active",
230+ "rating": 5,
231+ "priority": "high",
232+ "cluster_compat": "yes",
233+ "projects": [
234+ "research-papers",
235+ "findata"
236+ ],
237+ "notes": "Standard Python toolchain on nodes (uv-py3.12)."
238+ },
239+ {
240+ "tool": "fastapi",
241+ "use_state": "active",
242+ "rating": 4,
243+ "priority": "medium",
244+ "cluster_compat": "yes",
245+ "projects": [
246+ "findata",
247+ "spboucher-ai-apps"
248+ ]
249+ },
250+ {
251+ "tool": "duckdb",
252+ "use_state": "active",
253+ "rating": 5,
254+ "priority": "high",
255+ "cluster_compat": "yes",
256+ "projects": [
257+ "findata",
258+ "research-papers"
259+ ],
260+ "notes": "Query engine over the FirstRate Parquet lake; DuckDB 2.x API quirks documented in FinData."
261+ },
262+ {
263+ "tool": "polars",
264+ "use_state": "active",
265+ "rating": 4,
266+ "priority": "medium",
267+ "cluster_compat": "yes",
268+ "projects": [
269+ "findata"
270+ ]
271+ },
272+ {
273+ "tool": "apache-parquet",
274+ "use_state": "active",
275+ "rating": 5,
276+ "priority": "high",
277+ "cluster_compat": "yes",
278+ "projects": [
279+ "findata"
280+ ]
281+ },
282+ {
283+ "tool": "firstrate-data",
284+ "use_state": "active",
285+ "rating": 4,
286+ "priority": "high",
287+ "cluster_compat": "yes",
288+ "projects": [
289+ "findata",
290+ "research-papers"
291+ ],
292+ "subscription_status": "paid subscription",
293+ "notes": "Bulk intraday + fundamentals vendor; private-use licence, no redistribution."
294+ },
295+ {
296+ "tool": "sec-edgar",
297+ "use_state": "active",
298+ "rating": 5,
299+ "priority": "high",
300+ "cluster_compat": "yes",
301+ "projects": [
302+ "research-papers"
303+ ],
304+ "notes": "Russell 3000 filings database built from EDGAR bulk data."
305+ },
306+ {
307+ "tool": "fred",
308+ "use_state": "active",
309+ "rating": 4,
310+ "priority": "medium",
311+ "cluster_compat": "yes",
312+ "projects": [
313+ "research-papers"
314+ ]
315+ },
316+ {
317+ "tool": "statsmodels",
318+ "use_state": "active",
319+ "rating": 4,
320+ "priority": "medium",
321+ "cluster_compat": "yes",
322+ "projects": [
323+ "research-papers"
324+ ]
325+ },
326+ {
327+ "tool": "tex-live",
328+ "use_state": "active",
329+ "rating": 5,
330+ "priority": "high",
331+ "cluster_compat": "yes",
332+ "projects": [
333+ "research-papers",
334+ "uqo-teaching"
335+ ],
336+ "notes": "lualatex for working papers and course material."
337+ },
338+ {
339+ "tool": "overleaf",
340+ "use_state": "active",
341+ "rating": 4,
342+ "priority": "medium",
343+ "cluster_compat": "no",
344+ "projects": [
345+ "research-papers"
346+ ],
347+ "notes": "Thesis collaboration; Safari automation used to read comments."
348+ },
349+ {
350+ "tool": "pandoc",
351+ "use_state": "active",
352+ "rating": 5,
353+ "priority": "medium",
354+ "cluster_compat": "yes",
355+ "projects": [
356+ "research-papers"
357+ ],
358+ "notes": "LaTeX → Word recipe for journal submissions."
359+ },
360+ {
361+ "tool": "zotero",
362+ "use_state": "candidate",
363+ "priority": "low",
364+ "cluster_compat": "unknown",
365+ "notes": "Evaluate as a shared reference manager for the working-paper series."
366+ },
367+ {
368+ "tool": "jupyter",
369+ "use_state": "testing",
370+ "rating": 3,
371+ "priority": "low",
372+ "cluster_compat": "yes",
373+ "projects": [
374+ "research-papers"
375+ ]
376+ },
377+ {
378+ "tool": "mlx",
379+ "use_state": "active",
380+ "rating": 4,
381+ "priority": "medium",
382+ "cluster_compat": "yes",
383+ "projects": [
384+ "maclustr",
385+ "research-papers"
386+ ],
387+ "notes": "TITAN-MoE runtime work and local inference experiments on Apple Silicon nodes."
388+ },
389+ {
390+ "tool": "mlx-whisper",
391+ "use_state": "active",
392+ "rating": 4,
393+ "priority": "low",
394+ "cluster_compat": "yes",
395+ "projects": [
396+ "uqo-teaching"
397+ ],
398+ "notes": "Transcription of Zoom lecture recordings."
399+ },
400+ {
401+ "tool": "ollama",
402+ "use_state": "testing",
403+ "rating": 3,
404+ "priority": "medium",
405+ "cluster_compat": "yes",
406+ "projects": [
407+ "maclustr"
408+ ],
409+ "notes": "Local model group in chat app still empty; candidate backend."
410+ },
411+ {
412+ "tool": "swift",
413+ "use_state": "active",
414+ "rating": 4,
415+ "priority": "medium",
416+ "cluster_compat": "yes",
417+ "projects": [
418+ "apple-apps"
419+ ]
420+ },
421+ {
422+ "tool": "swiftui",
423+ "use_state": "active",
424+ "rating": 4,
425+ "priority": "medium",
426+ "cluster_compat": "yes",
427+ "projects": [
428+ "apple-apps"
429+ ]
430+ },
431+ {
432+ "tool": "xcode",
433+ "use_state": "active",
434+ "rating": 3,
435+ "priority": "medium",
436+ "cluster_compat": "no",
437+ "projects": [
438+ "apple-apps"
439+ ],
440+ "notes": "Laptop only (signing, TestFlight)."
441+ },
442+ {
443+ "tool": "testflight",
444+ "use_state": "active",
445+ "rating": 4,
446+ "priority": "low",
447+ "cluster_compat": "no",
448+ "projects": [
449+ "apple-apps"
450+ ]
451+ },
452+ {
453+ "tool": "launchd",
454+ "use_state": "active",
455+ "rating": 4,
456+ "priority": "medium",
457+ "cluster_compat": "yes",
458+ "projects": [
459+ "maclustr"
460+ ],
461+ "notes": "LaunchDaemons for agentd, guardians, WireGuard loops; LaunchDaemon (not Agent) on headless nodes."
462+ },
463+ {
464+ "tool": "tavily",
465+ "use_state": "active",
466+ "rating": 4,
467+ "priority": "medium",
468+ "cluster_compat": "yes",
469+ "projects": [
470+ "spboucher-ai-apps"
471+ ],
472+ "subscription_status": "API key",
473+ "notes": "Web search for chat/agents via MCP."
474+ },
475+ {
476+ "tool": "apify",
477+ "use_state": "active",
478+ "rating": 4,
479+ "priority": "medium",
480+ "cluster_compat": "yes",
481+ "projects": [
482+ "groupe-ka"
483+ ],
484+ "subscription_status": "API account",
485+ "notes": "Actors used by Ka connectors."
486+ },
487+ {
488+ "tool": "firecrawl",
489+ "use_state": "testing",
490+ "rating": 3,
491+ "priority": "low",
492+ "cluster_compat": "yes",
493+ "projects": [
494+ "groupe-ka"
495+ ],
496+ "notes": "Replaced by Scrapfly for Lou-Ka."
497+ },
498+ {
499+ "tool": "scrapfly",
500+ "use_state": "active",
501+ "rating": 4,
502+ "priority": "medium",
503+ "cluster_compat": "yes",
504+ "projects": [
505+ "groupe-ka"
506+ ],
507+ "subscription_status": "API account"
508+ },
509+ {
510+ "tool": "redis",
511+ "use_state": "active",
512+ "rating": 4,
513+ "priority": "medium",
514+ "cluster_compat": "yes",
515+ "projects": [
516+ "groupe-ka"
517+ ]
518+ },
519+ {
520+ "tool": "notion",
521+ "use_state": "testing",
522+ "rating": 3,
523+ "priority": "low",
524+ "cluster_compat": "yes",
525+ "notes": "Connected via MCP; not a primary store."
526+ },
527+ {
528+ "tool": "godaddy",
529+ "use_state": "active",
530+ "rating": 3,
531+ "priority": "medium",
532+ "cluster_compat": "unknown",
533+ "projects": [
534+ "maclustr"
535+ ],
536+ "subscription_status": "registrar for all domains",
537+ "notes": "DNS A records to the OVH gateway; changes done in the web console."
538+ },
539+ {
540+ "tool": "ovhcloud",
541+ "use_state": "active",
542+ "rating": 4,
543+ "priority": "high",
544+ "cluster_compat": "yes",
545+ "projects": [
546+ "maclustr"
547+ ],
548+ "subscription_status": "one dedicated server (Beauharnois)",
549+ "notes": "Public gateway BHS64; four other servers retired 2026-10-02."
550+ },
551+ {
552+ "tool": "lets-encrypt",
553+ "use_state": "active",
554+ "rating": 5,
555+ "priority": "medium",
556+ "cluster_compat": "yes",
557+ "projects": [
558+ "maclustr"
559+ ]
560+ },
561+ {
562+ "tool": "model-context-protocol",
563+ "use_state": "active",
564+ "rating": 5,
565+ "priority": "high",
566+ "cluster_compat": "yes",
567+ "projects": [
568+ "spboucher-ai-apps",
569+ "maclustr"
570+ ],
571+ "notes": "Cluster, AKOS, finance-data and search MCP servers used from Claude Code."
572+ },
573+ {
574+ "tool": "zoom",
575+ "use_state": "active",
576+ "rating": 3,
577+ "priority": "low",
578+ "cluster_compat": "no",
579+ "projects": [
580+ "uqo-teaching"
581+ ]
582+ },
583+ {
584+ "tool": "moodle",
585+ "use_state": "active",
586+ "rating": 2,
587+ "priority": "medium",
588+ "cluster_compat": "no",
589+ "projects": [
590+ "uqo-teaching"
591+ ],
592+ "notes": "UQO LMS; grading and announcements automated through Safari."
593+ }
594+]
\ No newline at end of file
added content/private/akos.json +9 −0
@@ -0,0 +1,9 @@
1+{"slug":"akos","name":"AKOS","aliases":[],"vendor":{"name":"Simon-Pierre Boucher","slug":"spboucher"},"homepage_url":"https://akos.spboucher.ai/","product_type":"platform","product_status":"active",
2+ "summary":"Registry of verified API knowledge packages with a governed execution gateway, compiler, provenance and MCP interface",
3+ "description":"AKOS is the owner's API Knowledge Operating System: a PostgreSQL registry of API Knowledge Packages compiled from OpenAPI documents or live probes, a governed execution gateway with policies for discovery, development, research and production use, provenance and lineage for every call, reproducible dataset exports, and an MCP endpoint so coding agents reuse verified clients instead of hand-writing integrations. It is private infrastructure that other owner projects depend on; this record exists so the inventory is complete, not as a public product listing.",
4+ "capabilities":["Owner-operated service on the MacLustr cluster","Access restricted to the owner","Documented in the project repository"],"workflows":[],"advantages":[],"limitations":["Not available to the public"],"prerequisites":[],"audiences":["Owner"],
5+ "alternatives":[],"categories":[{"slug":"api-development","primary":true},{"slug":"data-catalogs"}],"tags":["self-hosted"],"use_cases":["build-apis"],
6+ "operating_systems":["macos","web"],"execution_modes":["self-hosted"],"interfaces":["web","api"],"deployment_models":["on-premises"],"integrations":[],"data_formats":[],"languages":[],
7+ "source_model":"proprietary","pricing_model":["unknown"],"self_hostable":true,
8+ "sources":[{"url":"https://akos.spboucher.ai/","type":"official_site","supports":["name"],"checked_at":"2026-11-02","note":"Owner-controlled deployment; description written from the project documentation."}],
9+ "confidence":"high","uncertainty_note":"Private record (API Knowledge Operating System). Public exposure requires the owner's explicit approval; deployment details stay in owner notes.","discovery_method":"owner-inventory","depth":"standard","editorial_status":"reviewed","visibility":"private","featured":false,"author":"owner"}
added content/private/findata-os.json +9 −0
@@ -0,0 +1,9 @@
1+{"slug":"findata-os","name":"FinData OS","aliases":[],"vendor":{"name":"Simon-Pierre Boucher","slug":"spboucher"},"homepage_url":"https://findata.spboucher.ai/","product_type":"platform","product_status":"active",
2+ "summary":"Private lakehouse of intraday bars, options and fundamentals built on Parquet, DuckDB and PostgreSQL with scheduled ingestion from a licensed vendor",
3+ "description":"FinData OS is the owner's private financial data platform: a Parquet lake of minute-level bars for several thousand US symbols, options chains and point-in-time fundamentals, ingested under a private-use vendor licence, queried through DuckDB and governed by a PostgreSQL catalog with an API, a worker and encrypted backups. Vendor data cannot be redistributed, so the service is restricted to the owner and collaborators with their own licences. Recorded privately for completeness of the inventory.",
4+ "capabilities":["Owner-operated service on the MacLustr cluster","Access restricted to the owner","Documented in the project repository"],"workflows":[],"advantages":[],"limitations":["Not available to the public"],"prerequisites":[],"audiences":["Owner"],
5+ "alternatives":[],"categories":[{"slug":"hf-finance-research","primary":true},{"slug":"market-data-apis"}],"tags":["self-hosted"],"use_cases":["analyze-intraday-data"],
6+ "operating_systems":["macos","web"],"execution_modes":["self-hosted"],"interfaces":["web","api"],"deployment_models":["on-premises"],"integrations":[],"data_formats":[],"languages":[],
7+ "source_model":"proprietary","pricing_model":["unknown"],"self_hostable":true,
8+ "sources":[{"url":"https://findata.spboucher.ai/","type":"official_site","supports":["name"],"checked_at":"2026-11-02","note":"Owner-controlled deployment; description written from the project documentation."}],
9+ "confidence":"high","uncertainty_note":"Private record (Financial data lakehouse). Public exposure requires the owner's explicit approval; deployment details stay in owner notes.","discovery_method":"owner-inventory","depth":"standard","editorial_status":"reviewed","visibility":"private","featured":false,"author":"owner"}
added content/private/maclustr.json +10 −0
@@ -0,0 +1,10 @@
1+{"slug":"maclustr","name":"MacLustr","aliases":[],"vendor":{"name":"Simon-Pierre Boucher","slug":"spboucher"},"homepage_url":"https://www.maclustr.io/","product_type":"platform","product_status":"active",
2+ "summary":"Owner-operated cluster of Apple Silicon Macs with a public OVH gateway, WireGuard overlay and an orchestrator that places and supervises applications",
3+ "description":"MacLustr is the owner's private compute and hosting platform: a heterogeneous fleet of Mac Studios, Mac minis and MacBooks on one LAN, joined to a dedicated OVH server in Québec that terminates TLS and forwards traffic over WireGuard. An in-house orchestrator scores nodes on free memory, load, disk and installed runtimes, deploys each application with PM2, registers it, exposes it through the gateway and repairs it after outages. Companion native apps (macOS, iOS) monitor the fleet and let iPhones pull jobs. This record is private: it documents an internal system, not a product available to others.",
4+ "capabilities":["Scored placement of applications on the best node","PM2 supervision with self-healing every five minutes","Public exposure through Caddy on an OVH gateway over WireGuard","Fleet monitoring from native macOS and iOS apps","Distributed compute jobs proportional to core counts"],
5+ "workflows":["Deploy an app: manifest → stage → deploy → route → health check","Move an app between nodes with pre-copy and rollback"],"advantages":["No cloud GPU rental; unified memory on Apple Silicon","Everything under the owner's control"],"limitations":["Single residential uplink","Not a multi-tenant product"],"prerequisites":[],"audiences":["Owner"],
6+ "alternatives":["kubernetes","fly-io"],"categories":[{"slug":"distributed-computing","primary":true},{"slug":"infrastructure-provisioning"}],"tags":["self-hosted","apple-silicon"],"use_cases":["host-web-apps"],
7+ "operating_systems":["macos"],"execution_modes":["self-hosted"],"interfaces":["cli","api","desktop","mobile"],"deployment_models":["on-premises"],"integrations":["PM2","Caddy","WireGuard","PostgreSQL"],"data_formats":[],"languages":["Python","Swift","TypeScript"],
8+ "source_model":"proprietary","pricing_model":["unknown"],"self_hostable":true,
9+ "sources":[{"url":"https://www.maclustr.io/","type":"official_site","supports":["name","summary"],"checked_at":"2026-11-02","note":"Public showcase site; internal documentation lives in the owner's cluster-skill repository."}],
10+ "confidence":"high","uncertainty_note":"Private record. Deployment details, node inventories and credentials are deliberately absent from this record and must stay in owner notes.","discovery_method":"owner-inventory","depth":"standard","editorial_status":"reviewed","visibility":"private","featured":false,"author":"owner"}
added content/private/polyllm.json +9 −0
@@ -0,0 +1,9 @@
1+{"slug":"polyllm","name":"PolyLLM","aliases":[],"vendor":{"name":"Simon-Pierre Boucher","slug":"spboucher"},"homepage_url":"https://www.spboucher.ai/","product_type":"platform","product_status":"active",
2+ "summary":"Bring-your-own-key playground for comparing hosted language models side by side",
3+ "description":"PolyLLM is a bring-your-own-key playground that sends the same prompt to several hosted language models and shows the answers side by side, with a mobile-first interface. It was built as a personal comparison tool and is maintained as an internal project; provider keys stay in the browser and are never stored server-side. Recorded privately for inventory purposes; public availability has not been decided.",
4+ "capabilities":["Owner-operated service on the MacLustr cluster","Access restricted to the owner","Documented in the project repository"],"workflows":[],"advantages":[],"limitations":["Not available to the public"],"prerequisites":[],"audiences":["Owner"],
5+ "alternatives":[],"categories":[{"slug":"llm-ops","primary":true},{"slug":"ai-assistants"}],"tags":["self-hosted"],"use_cases":["evaluate-llm-apps"],
6+ "operating_systems":["macos","web"],"execution_modes":["self-hosted"],"interfaces":["web","api"],"deployment_models":["on-premises"],"integrations":[],"data_formats":[],"languages":[],
7+ "source_model":"proprietary","pricing_model":["unknown"],"self_hostable":true,
8+ "sources":[{"url":"https://www.spboucher.ai/","type":"official_site","supports":["name"],"checked_at":"2026-11-02","note":"Owner-controlled deployment; description written from the project documentation."}],
9+ "confidence":"high","uncertainty_note":"Private record (LLM playground). Public exposure requires the owner's explicit approval; deployment details stay in owner notes.","discovery_method":"owner-inventory","depth":"standard","editorial_status":"reviewed","visibility":"private","featured":false,"author":"owner"}
added content/private/spbgit.json +9 −0
@@ -0,0 +1,9 @@
1+{"slug":"spbgit","name":"SPB Git","aliases":[],"vendor":{"name":"Simon-Pierre Boucher","slug":"spboucher"},"homepage_url":"https://git.spboucher.ai/","product_type":"platform","product_status":"active",
2+ "summary":"Self-hosted Git server and web interface holding the canonical repositories of every owner project",
3+ "description":"SPB Git is the owner's self-hosted Git forge: bare repositories on the cluster gateway with a web interface for browsing, mobile-friendly themes and repository statistics. Since October 2026 every deployed application is a clone whose origin points here, which makes the forge the single source of truth for code across the cluster. The record is private because the forge is not open to external users.",
4+ "capabilities":["Owner-operated service on the MacLustr cluster","Access restricted to the owner","Documented in the project repository"],"workflows":[],"advantages":[],"limitations":["Not available to the public"],"prerequisites":[],"audiences":["Owner"],
5+ "alternatives":[],"categories":[{"slug":"version-control","primary":true},{"slug":"documentation"}],"tags":["self-hosted"],"use_cases":["collaborate"],
6+ "operating_systems":["macos","web"],"execution_modes":["self-hosted"],"interfaces":["web","api"],"deployment_models":["on-premises"],"integrations":[],"data_formats":[],"languages":[],
7+ "source_model":"proprietary","pricing_model":["unknown"],"self_hostable":true,
8+ "sources":[{"url":"https://git.spboucher.ai/","type":"official_site","supports":["name"],"checked_at":"2026-11-02","note":"Owner-controlled deployment; description written from the project documentation."}],
9+ "confidence":"high","uncertainty_note":"Private record (Self-hosted Git forge). Public exposure requires the owner's explicit approval; deployment details stay in owner notes.","discovery_method":"owner-inventory","depth":"standard","editorial_status":"reviewed","visibility":"private","featured":false,"author":"owner"}
added content/private/uqo-research-db.json +9 −0
@@ -0,0 +1,9 @@
1+{"slug":"uqo-research-db","name":"UQO Research DB","aliases":[],"vendor":{"name":"Simon-Pierre Boucher","slug":"spboucher"},"homepage_url":"https://www.spboucher.ai/","product_type":"platform","product_status":"active",
2+ "summary":"Internal research database of SEC filings and extracted chunks for Russell 3000 companies",
3+ "description":"The UQO Research DB is an internal corpus built from SEC EDGAR bulk filings for roughly 2,500 Russell 3000 companies, with parsed documents and text chunks indexed for retrieval, used as the evidence base for several working papers on disclosure, AI adoption and strategic projects. It is a research dataset governed by the SEC fair-access policy and the owner's own retention rules, not a product; the record is private so the inventory shows which internal assets the public tools support.",
4+ "capabilities":["Owner-operated service on the MacLustr cluster","Access restricted to the owner","Documented in the project repository"],"workflows":[],"advantages":[],"limitations":["Not available to the public"],"prerequisites":[],"audiences":["Owner"],
5+ "alternatives":[],"categories":[{"slug":"sec-filings","primary":true},{"slug":"academic-discovery"}],"tags":["self-hosted"],"use_cases":["parse-sec-filings"],
6+ "operating_systems":["macos","web"],"execution_modes":["self-hosted"],"interfaces":["web","api"],"deployment_models":["on-premises"],"integrations":[],"data_formats":[],"languages":[],
7+ "source_model":"proprietary","pricing_model":["unknown"],"self_hostable":true,
8+ "sources":[{"url":"https://www.spboucher.ai/","type":"official_site","supports":["name"],"checked_at":"2026-11-02","note":"Owner-controlled deployment; description written from the project documentation."}],
9+ "confidence":"high","uncertainty_note":"Private record (Research database). Public exposure requires the owner's explicit approval; deployment details stay in owner notes.","discovery_method":"owner-inventory","depth":"standard","editorial_status":"reviewed","visibility":"private","featured":false,"author":"owner"}
added content/tools/1password.json +52 −0
@@ -0,0 +1,52 @@
1+{
2+ "slug": "1password",
3+ "name": "1Password",
4+ "aliases": ["1Password 8", "AgileBits 1Password"],
5+ "vendor": { "name": "AgileBits Inc. (1Password)", "slug": "agilebits", "website": "https://1password.com" },
6+ "homepage_url": "https://1password.com/",
7+ "docs_url": "https://support.1password.com/",
8+ "pricing_url": "https://1password.com/pricing",
9+ "privacy_url": "https://1password.com/legal/privacy",
10+ "security_url": "https://1password.com/security",
11+ "product_type": "application",
12+ "product_status": "active",
13+ "summary": "Password and secrets manager for individuals, families and businesses with end-to-end encrypted vaults, passkeys, an SSH agent and a developer CLI",
14+ "description": "1Password is a proprietary password manager from AgileBits Inc. that stores logins, passkeys, cards, documents and arbitrary secure notes in encrypted vaults synchronized through the vendor's service. Native apps for macOS, Windows, Linux, iOS and Android, browser extensions and a web client fill credentials and generate passwords; sharing is organized through vaults with per-member permissions for families, teams and enterprises, and administrators get SSO integration, provisioning and activity reports.\n\nIts security design, as described on the vendor's security page, combines an account password that the company states it never stores with a Secret Key generated on the device, so that data is encrypted end to end and the service cannot read vault contents; authentication uses Secure Remote Password, and the company publishes independent audit results and runs a bug bounty. For developers, 1Password exposes a CLI (`op`) that injects secrets into environment variables and configuration files at run time, an SSH agent that signs with keys kept in the vault with biometric approval, Git commit signing, Connect servers and Service Accounts for CI, and SDKs for Go, Python and JavaScript.\n\nThere is no free tier; individual, family and business plans are subscription-based with a trial. Because vaults are hosted only on 1Password's infrastructure, organizations requiring a self-hosted store look to Bitwarden or a dedicated secrets manager such as Vault, and the clients are closed source.",
15+ "capabilities": ["Encrypted vaults for passwords, passkeys, cards, documents and notes across all major platforms", "Browser extensions and autofill, including passkey creation and sign-in", "Shared vaults with permissions for families, teams and enterprises plus SSO and SCIM provisioning", "Developer CLI (op) for injecting secrets into shells, CI and configuration", "SSH agent and Git commit signing backed by vault-stored keys", "Service Accounts, Connect server and SDKs for automation", "Watchtower reports on weak, reused or breached credentials"],
16+ "workflows": ["Replace plaintext .env files with op run and secret references", "Sign SSH sessions and Git commits with keys that never leave the vault", "Share infrastructure credentials with a team through a dedicated vault", "Provision users from an identity provider with SCIM"],
17+ "advantages": ["Consistent, polished clients on every platform", "Published security model with Secret Key and independent audits", "Strong developer tooling (CLI, SSH agent, SDKs)", "Team administration with SSO and reporting"],
18+ "limitations": ["Subscription only; no free tier", "Closed-source clients and hosted-only vault storage", "No self-hosted server option", "CLI-based secret injection adds a runtime dependency to scripts"],
19+ "prerequisites": ["1Password account subscription", "Desktop app required for the SSH agent and biometric CLI unlock"],
20+ "audiences": ["Individuals and families", "Development teams managing shared credentials", "Enterprises with SSO and provisioning needs"],
21+ "alternatives": ["bitwarden", "hashicorp-vault", "infisical"],
22+ "comparison_notes": "Bitwarden covers the same end-user use cases with open-source clients, a free tier and an optional self-hosted server, which 1Password does not offer. HashiCorp Vault and Infisical are infrastructure secrets managers for machines and pipelines rather than personal password vaults, though 1Password's CLI and Service Accounts overlap with their simplest uses.",
23+ "categories": [{ "slug": "secrets-management", "primary": true }, { "slug": "identity-access" }],
24+ "tags": ["secrets", "password-manager", "passkeys", "ssh", "cli", "macos", "security", "saas"],
25+ "use_cases": ["store-secrets", "manage-credentials"],
26+ "operating_systems": ["macos", "windows", "linux", "ios", "android", "web"],
27+ "execution_modes": ["cloud", "local"],
28+ "interfaces": ["desktop", "mobile", "browser-extension", "cli", "sdk", "web"],
29+ "deployment_models": ["saas", "desktop"],
30+ "integrations": ["SSH", "Git", "GitHub Actions", "Okta", "Microsoft Entra ID", "Google Workspace", "Kubernetes (operator)", "Terraform"],
31+ "data_formats": ["1PUX export", "CSV", "Secret references (op://)"],
32+ "languages": ["Go", "Python", "JavaScript"],
33+ "source_model": "proprietary",
34+ "pricing_model": ["paid", "enterprise"],
35+ "pricing_checked_at": "2026-11-02",
36+ "privacy_posture": "The vendor's security page describes a dual-key model (account password never stored by the company plus a device-generated Secret Key), end-to-end encryption, Secure Remote Password authentication, published independent audits and a bug bounty program.",
37+ "self_hostable": false,
38+ "sources": [
39+ { "url": "https://1password.com/", "type": "official_site", "title": "1Password", "supports": ["name", "summary", "operating_systems"], "checked_at": "2026-11-02" },
40+ { "url": "https://support.1password.com/", "type": "official_docs", "title": "1Password Support", "supports": ["capabilities", "workflows"], "checked_at": "2026-11-02" },
41+ { "url": "https://www.1password.dev/", "type": "official_docs", "title": "1Password Developer", "supports": ["capabilities", "interfaces", "languages"], "checked_at": "2026-11-02" },
42+ { "url": "https://1password.com/security", "type": "policy_page", "title": "1Password Security", "supports": ["privacy_posture"], "checked_at": "2026-11-02" },
43+ { "url": "https://1password.com/pricing", "type": "pricing_page", "title": "1Password Pricing", "supports": ["pricing_model"], "checked_at": "2026-11-02" }
44+ ],
45+ "confidence": "high",
46+ "discovery_method": "editorial-research",
47+ "depth": "deep",
48+ "editorial_status": "reviewed",
49+ "visibility": "public",
50+ "featured": false,
51+ "author": "batch-B2"
52+}
added content/tools/alfred.json +46 −0
@@ -0,0 +1,46 @@
1+{
2+ "slug": "alfred",
3+ "name": "Alfred",
4+ "aliases": ["Alfred Powerpack"],
5+ "vendor": { "name": "Running with Crayons Ltd", "slug": "running-with-crayons", "website": "https://www.alfredapp.com/" },
6+ "homepage_url": "https://www.alfredapp.com/",
7+ "docs_url": "https://www.alfredapp.com/help/",
8+ "pricing_url": "https://www.alfredapp.com/shop/",
9+ "product_type": "application",
10+ "product_status": "active",
11+ "summary": "macOS launcher and productivity app whose paid Powerpack adds workflows, clipboard history, snippets and custom searches",
12+ "description": "Alfred is a macOS launcher developed since 2010 by Running with Crayons Ltd. The free application searches and opens apps, files, bookmarks and web searches, performs calculations and system commands, and can be driven entirely from the keyboard. The paid Powerpack, sold as a one-time single license or a Mega Supporter license with lifetime upgrades, unlocks workflows, clipboard history, snippet expansion, file actions, a Music mini player, Terminal integration, themes and settings sync.\n\nWorkflows are Alfred's automation layer: visual graphs that connect triggers (keywords, hotkeys, Remote buttons) to actions and scripts in AppleScript, shell, Python or other languages. A large community has published workflows for years through the Alfred Gallery and forum, giving the app a long tail of integrations.\n\nAlfred is proprietary and macOS-only. Compared with Raycast it has no built-in AI assistant or official extension API in TypeScript, and its workflow format is specific to Alfred.",
13+ "capabilities": ["Keyboard launcher for apps, files and web searches", "Workflows connecting triggers to scripts and actions (Powerpack)", "Clipboard history and snippet expansion (Powerpack)", "Custom file filters and web searches", "Settings sync via a cloud folder"],
14+ "workflows": ["Launch apps and search files without the mouse", "Build a workflow that queries an internal tool from a keyword", "Expand snippets across applications"],
15+ "advantages": ["Lightweight, fast and long-established", "One-time Powerpack license", "Large community library of workflows"],
16+ "limitations": ["Proprietary and macOS only", "Automation features require the paid Powerpack", "No official cross-platform or AI features"],
17+ "prerequisites": ["macOS"],
18+ "audiences": ["Mac power users", "People who prefer a one-time purchase over subscriptions"],
19+ "alternatives": ["raycast", "keyboard-maestro", "hammerspoon"],
20+ "categories": [{ "slug": "macos-utilities", "primary": true }, { "slug": "macos-automation" }],
21+ "tags": ["macos", "launcher", "productivity", "proprietary"],
22+ "use_cases": ["automate-desktop-tasks"],
23+ "operating_systems": ["macos"],
24+ "execution_modes": ["local"],
25+ "interfaces": ["desktop"],
26+ "deployment_models": ["desktop"],
27+ "integrations": ["AppleScript", "Shell", "1Password", "Music.app", "Terminal"],
28+ "data_formats": [".alfredworkflow bundles"],
29+ "languages": [],
30+ "source_model": "proprietary",
31+ "pricing_model": ["freemium", "paid"],
32+ "pricing_checked_at": "2026-11-02",
33+ "self_hostable": false,
34+ "sources": [
35+ { "url": "https://www.alfredapp.com/", "type": "official_site", "title": "Alfred – Productivity App for macOS", "supports": ["name", "summary", "capabilities"], "checked_at": "2026-11-02" },
36+ { "url": "https://www.alfredapp.com/powerpack/", "type": "pricing_page", "title": "Alfred Powerpack", "supports": ["pricing_model", "capabilities", "vendor"], "checked_at": "2026-11-02" },
37+ { "url": "https://www.alfredapp.com/help/", "type": "official_docs", "title": "Alfred Help and Support", "supports": ["capabilities"], "checked_at": "2026-11-02" }
38+ ],
39+ "confidence": "high",
40+ "discovery_method": "editorial-research",
41+ "depth": "standard",
42+ "editorial_status": "reviewed",
43+ "visibility": "public",
44+ "featured": false,
45+ "author": "batch-C"
46+}
added content/tools/alpaca.json +167 −0
@@ -0,0 +1,167 @@
1+{
2+ "slug": "alpaca",
3+ "name": "Alpaca",
4+ "aliases": [
5+ "Alpaca Markets",
6+ "Alpaca Trading API",
7+ "alpaca-py"
8+ ],
9+ "vendor": {
10+ "name": "Alpaca (AlpacaDB, Inc.)",
11+ "slug": "alpaca",
12+ "website": "https://alpaca.markets"
13+ },
14+ "homepage_url": "https://alpaca.markets/",
15+ "docs_url": "https://docs.alpaca.markets/",
16+ "repo_url": "https://github.com/alpacahq/alpaca-py",
17+ "pricing_url": "https://alpaca.markets/pricing",
18+ "license_url": "https://github.com/alpacahq/alpaca-py/blob/master/LICENSE",
19+ "product_type": "api-service",
20+ "product_status": "active",
21+ "summary": "API-first US brokerage offering a Trading API, Market Data API and Broker API for stocks, ETFs, options and crypto, with paper trading",
22+ "description": "Alpaca is an API-first brokerage and market-data provider in the financial analysis and investing category. Developers open an account and interact entirely through REST and WebSocket endpoints: the Trading API places and manages orders for US stocks, ETFs, options and crypto; the Market Data API streams quotes, trades and bars and serves historical data; and the Broker API lets fintech apps open and manage end-customer accounts. A free paper-trading environment mirrors the live API, and official SDKs include the Apache-licensed alpaca-py plus libraries for other languages. The service is cloud-hosted, so no local gateway is needed, which makes it a common choice for bots and research pipelines. Coverage is centered on US markets, real-time data breadth depends on the subscribed data plan, and brokerage services are subject to US regulatory eligibility.",
23+ "capabilities": [
24+ "Order management for US equities, ETFs, options and crypto",
25+ "Real-time and historical market data over REST and WebSocket",
26+ "Paper trading environment identical to live endpoints",
27+ "Broker API for embedding brokerage in applications",
28+ "Official SDKs including alpaca-py",
29+ "OAuth for third-party app connections"
30+ ],
31+ "workflows": [
32+ "Prototype a bot against paper trading, then switch keys to live",
33+ "Backfill minute bars for research through the data API"
34+ ],
35+ "advantages": [
36+ "No desktop gateway; pure cloud API",
37+ "Free paper trading",
38+ "Apache-2.0 SDK"
39+ ],
40+ "limitations": [
41+ "US-centric market coverage",
42+ "Full real-time data feeds require paid data plans",
43+ "Account eligibility depends on jurisdiction"
44+ ],
45+ "prerequisites": [
46+ "Alpaca account and API keys"
47+ ],
48+ "audiences": [
49+ "Developers building trading bots",
50+ "Fintech teams embedding brokerage",
51+ "Students learning with paper trading"
52+ ],
53+ "alternatives": [
54+ "interactive-brokers-api",
55+ "kraken-api",
56+ "quantconnect"
57+ ],
58+ "comparison_notes": "Interactive Brokers reaches many more markets but requires a running gateway for its main API; Alpaca is simpler to integrate and US-focused. Kraken is crypto-only. QuantConnect can trade through Alpaca as one of its brokerages.",
59+ "categories": [
60+ {
61+ "slug": "financial-analysis-investing",
62+ "primary": true
63+ },
64+ {
65+ "slug": "market-data-apis",
66+ "label": "Equity and crypto market data API"
67+ }
68+ ],
69+ "tags": [
70+ "brokerage",
71+ "trading-api",
72+ "market-data",
73+ "api",
74+ "python",
75+ "websocket"
76+ ],
77+ "use_cases": [
78+ "automate-trading",
79+ "access-market-data"
80+ ],
81+ "operating_systems": [
82+ "any"
83+ ],
84+ "execution_modes": [
85+ "cloud"
86+ ],
87+ "interfaces": [
88+ "api",
89+ "sdk"
90+ ],
91+ "deployment_models": [
92+ "saas"
93+ ],
94+ "integrations": [
95+ "QuantConnect",
96+ "TradingView",
97+ "Python",
98+ "JavaScript"
99+ ],
100+ "data_formats": [
101+ "JSON",
102+ "WebSocket messages"
103+ ],
104+ "languages": [
105+ "Python",
106+ "JavaScript",
107+ "Go",
108+ "C#"
109+ ],
110+ "source_model": "mixed",
111+ "license_spdx": "Apache-2.0",
112+ "pricing_model": [
113+ "freemium",
114+ "usage-based",
115+ "paid"
116+ ],
117+ "pricing_checked_at": "2026-11-02",
118+ "self_hostable": false,
119+ "sources": [
120+ {
121+ "url": "https://alpaca.markets/",
122+ "type": "official_site",
123+ "supports": [
124+ "name",
125+ "summary"
126+ ],
127+ "checked_at": "2026-11-02",
128+ "title": "Alpaca"
129+ },
130+ {
131+ "url": "https://docs.alpaca.markets/",
132+ "type": "official_docs",
133+ "supports": [
134+ "capabilities",
135+ "interfaces"
136+ ],
137+ "checked_at": "2026-11-02",
138+ "title": "Alpaca documentation"
139+ },
140+ {
141+ "url": "https://alpaca.markets/pricing",
142+ "type": "pricing_page",
143+ "supports": [
144+ "pricing_model"
145+ ],
146+ "checked_at": "2026-11-02",
147+ "title": "Alpaca pricing"
148+ },
149+ {
150+ "url": "https://github.com/alpacahq/alpaca-py/blob/master/LICENSE",
151+ "type": "license_page",
152+ "supports": [
153+ "license_spdx"
154+ ],
155+ "checked_at": "2026-11-02",
156+ "title": "alpaca-py LICENSE (Apache 2.0)",
157+ "note": "License applies to the SDK, not the service"
158+ }
159+ ],
160+ "confidence": "high",
161+ "depth": "standard",
162+ "featured": false,
163+ "discovery_method": "editorial-research",
164+ "editorial_status": "reviewed",
165+ "visibility": "public",
166+ "author": "batch-F"
167+}
added content/tools/alpha-vantage.json +48 −0
@@ -0,0 +1,48 @@
1+{
2+ "slug": "alpha-vantage",
3+ "name": "Alpha Vantage",
4+ "aliases": [],
5+ "vendor": { "name": "Alpha Vantage Inc.", "slug": "alpha-vantage", "website": "https://www.alphavantage.co" },
6+ "homepage_url": "https://www.alphavantage.co/",
7+ "docs_url": "https://www.alphavantage.co/documentation/",
8+ "pricing_url": "https://www.alphavantage.co/premium/",
9+ "product_type": "api-service",
10+ "product_status": "active",
11+ "summary": "REST API for stock, ETF, options, forex, crypto, commodity and economic data plus fundamentals, news sentiment and technical indicators, with a free key tier and premium plans",
12+ "description": "Alpha Vantage is a REST market-data API from Alpha Vantage Inc. It serves daily, weekly, monthly and intraday time series for stocks and ETFs, options data, index data, fundamentals (statements, earnings), forex and cryptocurrency rates, commodities, economic indicators, more than fifty technical indicators and an \"Alpha Intelligence\" family covering news sentiment, earnings transcripts and insider activity. Responses are JSON by default with CSV available on most endpoints, every call carries an API key, and the company also publishes an MCP server for AI agents and spreadsheet access.\n\nThe free key covers most endpoints within a daily request allowance; premium subscriptions scale by requests per minute and are billed monthly or annually, with enterprise arrangements for higher throughput. The terms of service restrict standard use to personal, non-commercial purposes and define redistribution to third parties or use inside commercial products as commercial use requiring a separate agreement. Alpha Vantage is popular for prototypes and teaching because of the free tier, but rate limits, daily history truncation on free keys and the licence boundary make it less suited to production or redistribution.",
13+ "capabilities": ["Daily, weekly, monthly and intraday stock and ETF series", "Options, index, forex, crypto and commodity data", "Fundamentals and earnings", "News sentiment and other Alpha Intelligence endpoints", "Technical indicators", "JSON and CSV output", "MCP server for AI agents"],
14+ "workflows": ["Prototyping a dashboard with a free key", "Teaching API consumption in a finance course"],
15+ "advantages": ["Free tier covering most endpoints", "Simple REST interface", "Broad asset and indicator coverage"],
16+ "limitations": ["Daily and per-minute request limits by plan", "Standard terms are personal, non-commercial", "Redistribution requires a commercial agreement"],
17+ "prerequisites": ["Free API key"],
18+ "audiences": ["Students and hobbyist developers", "Analysts prototyping data pipelines"],
19+ "alternatives": ["polygon-io", "yfinance", "nasdaq-data-link", "fred", "databento"],
20+ "comparison_notes": "yfinance is free but unofficial; Massive and Databento are paid professional APIs with tick-level depth; FRED covers economic series only. Alpha Vantage's niche is a licensed free tier with broad but rate-limited coverage.",
21+ "categories": [{ "slug": "market-data-apis", "primary": true }],
22+ "tags": ["market-data", "api", "time-series", "free-tier"],
23+ "use_cases": ["access-market-data"],
24+ "operating_systems": ["any"],
25+ "execution_modes": ["cloud"],
26+ "interfaces": ["api", "mcp-server"],
27+ "deployment_models": ["saas"],
28+ "integrations": ["Excel/Google Sheets", "MCP clients", "Community Python and R wrappers"],
29+ "data_formats": ["JSON", "CSV"],
30+ "languages": [],
31+ "source_model": "proprietary",
32+ "pricing_model": ["freemium", "paid", "enterprise"],
33+ "pricing_checked_at": "2026-11-02",
34+ "self_hostable": false,
35+ "sources": [
36+ { "url": "https://www.alphavantage.co/", "type": "official_site", "title": "Alpha Vantage: Free Stock APIs in JSON & Excel", "supports": ["name", "summary", "capabilities", "vendor"], "checked_at": "2026-11-02" },
37+ { "url": "https://www.alphavantage.co/documentation/", "type": "official_docs", "title": "Alpha Vantage API Documentation", "supports": ["capabilities", "data_formats", "pricing_model"], "checked_at": "2026-11-02" },
38+ { "url": "https://www.alphavantage.co/premium/", "type": "pricing_page", "title": "Premium API Key", "supports": ["pricing_model"], "checked_at": "2026-11-02" },
39+ { "url": "https://www.alphavantage.co/terms_of_service/", "type": "policy_page", "title": "Alpha Vantage Terms of Service (PDF)", "supports": ["limitations", "description"], "checked_at": "2026-11-02", "note": "Personal, non-commercial use by default; redistribution counts as commercial use" }
40+ ],
41+ "confidence": "high",
42+ "discovery_method": "editorial-research",
43+ "depth": "standard",
44+ "editorial_status": "reviewed",
45+ "visibility": "public",
46+ "featured": false,
47+ "author": "batch-E"
48+}
added content/tools/ansible.json +49 −0
@@ -0,0 +1,49 @@
1+{
2+ "slug": "ansible",
3+ "name": "Ansible",
4+ "aliases": ["ansible-core", "Red Hat Ansible Automation Platform"],
5+ "vendor": { "name": "Red Hat (Ansible community)", "slug": "red-hat", "website": "https://www.redhat.com" },
6+ "homepage_url": "https://www.redhat.com/en/ansible-collaborative",
7+ "docs_url": "https://docs.ansible.com/",
8+ "repo_url": "https://github.com/ansible/ansible",
9+ "license_url": "https://github.com/ansible/ansible/blob/devel/COPYING",
10+ "product_type": "cli-tool",
11+ "product_status": "active",
12+ "summary": "Agentless configuration management and orchestration tool that runs YAML playbooks over SSH, with collections for clouds, network gear and applications",
13+ "description": "Ansible is an open-source automation tool sponsored by Red Hat and licensed under GPL-3.0. It needs no agent on managed machines: a control node connects over SSH (or WinRM, or local APIs for cloud services), pushes small Python modules and executes them, then reports changes. Work is described in YAML playbooks composed of tasks that are expected to be idempotent, grouped into roles and distributed as collections through Ansible Galaxy; an inventory file or dynamic inventory plugin lists hosts and their variables.\n\nansible-core is the engine, while the Ansible community package bundles hundreds of collections for Linux packages and services, Docker, Kubernetes, AWS, Azure, Google Cloud, network devices and SaaS APIs. Red Hat sells Ansible Automation Platform, which adds a web controller, RBAC, execution environments and support. The former ansible.com site now redirects to Red Hat's Ansible Collaborative pages.\n\nAnsible shines at configuring fleets of servers, bootstrapping tools and running ad hoc commands across many hosts. Its push model and Python execution are slower than agent-based systems on very large estates, YAML with Jinja2 templating grows unwieldy for complex logic, and it is not a declarative provisioning tool in the way Terraform is.",
14+ "capabilities": ["Agentless execution over SSH and WinRM with idempotent modules", "YAML playbooks, roles and reusable collections from Ansible Galaxy", "Static and dynamic inventories with host and group variables", "Jinja2 templating for configuration files", "Ad hoc commands across host groups", "Ansible Vault for encrypting secrets in repositories"],
15+ "workflows": ["Harden and configure a fleet of Linux or macOS hosts", "Install runtimes and deploy services after Terraform provisions machines", "Run the same command across every node in a cluster"],
16+ "advantages": ["No agents to install or maintain", "Readable YAML and a very large module library", "Works with any host reachable over SSH, including macOS"],
17+ "limitations": ["Push execution is slow on very large inventories", "Complex logic in YAML and Jinja2 becomes hard to maintain", "Requires Python on managed hosts for most modules"],
18+ "prerequisites": ["Python on the control node", "SSH access and Python on managed hosts"],
19+ "audiences": ["System administrators", "DevOps engineers", "Operators of small server or Mac fleets"],
20+ "alternatives": ["terraform", "opentofu"],
21+ "comparison_notes": "Terraform and OpenTofu provision infrastructure declaratively and track state, whereas Ansible configures what runs inside machines procedurally; the common pattern is Terraform first, Ansible second.",
22+ "categories": [{ "slug": "infrastructure-provisioning", "primary": true }],
23+ "tags": ["configuration-management", "automation", "ssh", "yaml", "cli", "open-source", "python", "devops"],
24+ "use_cases": ["provision-infrastructure", "configure-servers"],
25+ "operating_systems": ["linux", "macos"],
26+ "execution_modes": ["local", "self-hosted"],
27+ "interfaces": ["cli"],
28+ "deployment_models": ["desktop", "on-premises"],
29+ "integrations": ["SSH", "Docker", "Kubernetes", "AWS", "Azure", "Google Cloud", "Terraform", "Ansible Galaxy"],
30+ "data_formats": ["YAML", "Jinja2", "INI inventory"],
31+ "languages": ["Python"],
32+ "source_model": "open-source",
33+ "license_spdx": "GPL-3.0-or-later",
34+ "pricing_model": ["open-source", "free"],
35+ "self_hostable": true,
36+ "sources": [
37+ { "url": "https://www.redhat.com/en/ansible-collaborative", "type": "official_site", "title": "Ansible Collaborative | Red Hat", "supports": ["name", "summary", "vendor"], "checked_at": "2026-11-02", "note": "www.ansible.com redirects to this page." },
38+ { "url": "https://docs.ansible.com/", "type": "official_docs", "title": "Ansible Documentation", "supports": ["capabilities", "workflows", "prerequisites"], "checked_at": "2026-11-02" },
39+ { "url": "https://github.com/ansible/ansible/blob/devel/COPYING", "type": "license_page", "title": "Ansible COPYING (GPL-3.0)", "supports": ["license_spdx", "source_model"], "checked_at": "2026-11-02" }
40+ ],
41+ "confidence": "high",
42+ "uncertainty_note": "Ansible Automation Platform is a commercial Red Hat product; no public pricing page is recorded.",
43+ "discovery_method": "editorial-research",
44+ "depth": "standard",
45+ "editorial_status": "reviewed",
46+ "visibility": "public",
47+ "featured": false,
48+ "author": "batch-B2"
49+}
added content/tools/apache-airflow.json +163 −0
@@ -0,0 +1,163 @@
1+{
2+ "aliases": [
3+ "Airflow"
4+ ],
5+ "workflows": [
6+ "Nightly ELT: extract, load to warehouse, run dbt",
7+ "Scheduling ML training and batch inference jobs",
8+ "Coordinating cross-system jobs with sensors and triggers"
9+ ],
10+ "advantages": [
11+ "Largest ecosystem of operators and integrations",
12+ "Managed services from multiple vendors",
13+ "Mature scheduler and UI"
14+ ],
15+ "limitations": [
16+ "Several components to operate (database, scheduler, workers)",
17+ "Task-centric model; data passing between tasks is indirect",
18+ "Upgrades between major versions require migration effort"
19+ ],
20+ "prerequisites": [
21+ "Python environment plus a metadata database (PostgreSQL recommended)"
22+ ],
23+ "audiences": [
24+ "Data engineers",
25+ "ML platform teams"
26+ ],
27+ "alternatives": [
28+ "dagster",
29+ "prefect",
30+ "dbt",
31+ "github-actions"
32+ ],
33+ "tags": [
34+ "orchestration",
35+ "python",
36+ "open-source",
37+ "self-hosted",
38+ "scheduling"
39+ ],
40+ "use_cases": [
41+ "orchestrate-pipelines",
42+ "transform-data"
43+ ],
44+ "operating_systems": [
45+ "linux",
46+ "macos"
47+ ],
48+ "deployment_models": [
49+ "on-premises",
50+ "managed-cloud"
51+ ],
52+ "integrations": [
53+ "dbt",
54+ "Apache Spark",
55+ "Kubernetes",
56+ "PostgreSQL",
57+ "Amazon S3",
58+ "Google Cloud",
59+ "Snowflake",
60+ "Slack"
61+ ],
62+ "data_formats": [
63+ "Python DAG files",
64+ "JSON (XCom)"
65+ ],
66+ "languages": [
67+ "Python"
68+ ],
69+ "self_hostable": true,
70+ "discovery_method": "editorial-research",
71+ "depth": "standard",
72+ "editorial_status": "reviewed",
73+ "visibility": "public",
74+ "featured": false,
75+ "author": "batch-D",
76+ "slug": "apache-airflow",
77+ "name": "Apache Airflow",
78+ "vendor": {
79+ "name": "Apache Software Foundation",
80+ "slug": "apache-software-foundation",
81+ "website": "https://www.apache.org/"
82+ },
83+ "homepage_url": "https://airflow.apache.org/",
84+ "docs_url": "https://airflow.apache.org/docs/",
85+ "repo_url": "https://github.com/apache/airflow",
86+ "license_url": "https://github.com/apache/airflow/blob/main/LICENSE",
87+ "product_type": "platform",
88+ "product_status": "active",
89+ "summary": "Python workflow orchestrator for scheduling and monitoring DAGs of tasks, with hundreds of provider packages and managed offerings from several clouds",
90+ "description": "Apache Airflow is an open-source orchestration platform, originally from Airbnb and now an Apache Software Foundation project under Apache 2.0, for authoring, scheduling and monitoring workflows defined as Python code. Each workflow is a DAG of tasks executed by operators from provider packages that cover databases, cloud services, Spark, dbt, Kubernetes and HTTP APIs; the scheduler handles dependencies, retries, backfills and SLAs, and a web UI shows runs, logs and task state. Airflow 3, released in 2025, introduced a new React UI, a task execution API that isolates workers, DAG versioning, event-driven scheduling and data assets as first-class scheduling triggers.\n\nAirflow is the most widely deployed orchestrator and is available as managed services (Astronomer, Amazon MWAA, Google Cloud Composer). Running it well means operating a metadata database, scheduler, web server and workers (Celery or Kubernetes executors), which is heavier than Dagster or Prefect for small teams. Its task-centric model also handles data-passing between tasks less naturally than asset-oriented tools.",
91+ "capabilities": [
92+ "DAGs defined in Python with the TaskFlow API",
93+ "Scheduler with retries, backfills and dependency handling",
94+ "Provider packages for clouds, databases, Spark, dbt and Kubernetes",
95+ "Web UI for monitoring runs and logs",
96+ "Celery, Kubernetes and local executors",
97+ "Asset-based and event-driven scheduling (Airflow 3)"
98+ ],
99+ "categories": [
100+ {
101+ "slug": "etl-elt",
102+ "primary": true
103+ }
104+ ],
105+ "execution_modes": [
106+ "self-hosted",
107+ "cloud"
108+ ],
109+ "interfaces": [
110+ "web",
111+ "cli",
112+ "api",
113+ "library"
114+ ],
115+ "source_model": "open-source",
116+ "license_spdx": "Apache-2.0",
117+ "pricing_model": [
118+ "open-source",
119+ "free"
120+ ],
121+ "sources": [
122+ {
123+ "url": "https://airflow.apache.org/",
124+ "type": "official_site",
125+ "supports": [
126+ "name",
127+ "summary"
128+ ],
129+ "checked_at": "2026-11-02",
130+ "title": "Apache Airflow"
131+ },
132+ {
133+ "url": "https://airflow.apache.org/docs/",
134+ "type": "official_docs",
135+ "supports": [
136+ "capabilities",
137+ "integrations"
138+ ],
139+ "checked_at": "2026-11-02",
140+ "title": "Airflow documentation"
141+ },
142+ {
143+ "url": "https://github.com/apache/airflow/blob/main/LICENSE",
144+ "type": "license_page",
145+ "supports": [
146+ "license_spdx",
147+ "source_model"
148+ ],
149+ "checked_at": "2026-11-02",
150+ "title": "Airflow LICENSE (Apache 2.0)"
151+ },
152+ {
153+ "url": "https://github.com/apache/airflow",
154+ "type": "repository",
155+ "supports": [
156+ "repo_url"
157+ ],
158+ "checked_at": "2026-11-02",
159+ "title": "apache/airflow"
160+ }
161+ ],
162+ "confidence": "high"
163+}
added content/tools/apache-arrow.json +205 −0
Large diff (205 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apache-datafusion.json +162 −0
Large diff (162 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apache-iceberg.json +169 −0
Large diff (169 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apache-kafka.json +182 −0
Large diff (182 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apache-parquet.json +186 −0
Large diff (186 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apache-spark.json +185 −0
Large diff (185 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apache-superset.json +163 −0
Large diff (163 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apify.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apple-foundation-models.json +43 −0
Large diff (43 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/apple-notes.json +146 −0
Large diff (146 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/applescript.json +44 −0
Large diff (44 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/arch.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/archivebox.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/arxiv.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/authentik.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/autogen.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/automator.json +44 −0
Large diff (44 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/aws.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/axolotl.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/azure.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bear.json +147 −0
Large diff (147 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/biblatex.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/biome.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bitwarden.json +52 −0
Large diff (52 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bloomberg-terminal.json +45 −0
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bluebeam-revu.json +162 −0
Large diff (162 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/borgbackup.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/braintrust.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/brave-search-api.json +45 −0
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bright-data.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/browsertrix.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bruno.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bullmq.json +162 −0
Large diff (162 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/bun.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/caddy.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/centris.json +133 −0
Large diff (133 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/chatgpt.json +44 −0
Large diff (44 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/chroma.json +180 −0
Large diff (180 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/claude-code.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/claude-developer-platform.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/claude.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/clickhouse.json +215 −0
Large diff (215 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/cliclick.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/cloudflare-tunnel.json +52 −0
Large diff (52 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/cloudflare.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/cohere.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/comfyui.json +189 −0
Large diff (189 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/common-crawl.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/connected-papers.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/consensus.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/core-ml.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/craft.json +154 −0
Large diff (154 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/crawlee.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/create-ml.json +44 −0
Large diff (44 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/crewai.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/crossref.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/crowdsec.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/cursor.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/cypress.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/d3.json +165 −0
Large diff (165 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/dagster.json +178 −0
Large diff (178 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/dask.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/databento.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/dbt.json +217 −0
Large diff (217 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/delta-lake.json +169 −0
Large diff (169 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/deno.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/discord.json +148 −0
Large diff (148 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/docker.json +53 −0
Large diff (53 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/docusaurus.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/donnees-quebec.json +150 −0
Large diff (150 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/dowhy.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/draw-io.json +169 −0
Large diff (169 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/drizzle-orm.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/dspy.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/duckdb.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/econml.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/edgartools.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/elasticsearch.json +208 −0
Large diff (208 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/elevenlabs.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/elicit.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/eslint.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/etherscan.json +139 −0
Large diff (139 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/eurostat.json +145 −0
Large diff (145 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/eviews.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/exa.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/excalidraw.json +164 −0
Large diff (164 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/exo.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/express.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/fail2ban.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/fastapi.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/figma.json +181 −0
Large diff (181 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/firecrawl.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/firstrate-data.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/fixest.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/fly-io.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/forgejo.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/fred.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/gemini-api.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/gemini.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/geocodio.json +162 −0
Large diff (162 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/geopandas.json +168 −0
Large diff (168 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/ghostfolio.json +157 −0
Large diff (157 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/ghostty.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/git.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/gitea.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/github-actions.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/github.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/gitlab.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/gnu-parallel.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/go.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/godaddy.json +45 −0
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/google-cloud.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/google-maps-platform.json +163 −0
Large diff (163 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/google-scholar.json +45 −0
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/google-workspace.json +159 −0
Large diff (159 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/grafana.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/great-expectations.json +186 −0
Large diff (186 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/gretl.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/groq.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/h3.json +166 −0
Large diff (166 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hammerspoon.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hashicorp-vault.json +52 −0
Large diff (52 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hetzner.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/homebrew.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hono.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hoppscotch.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hubspot.json +148 −0
Large diff (148 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/hugging-face-hub.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/imf-data.json +143 −0
Large diff (143 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/infisical.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/instructor.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/interactive-brokers-api.json +187 −0
Large diff (187 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/iterm2.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/jabref.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/jax.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/jest.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/jina-reader.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/julia.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/jupyter.json +201 −0
Large diff (201 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/karabiner-elements.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/keyboard-maestro.json +45 −0
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/keycloak.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/kraken-api.json +161 −0
Large diff (161 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/kubernetes.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/kuzu.json +190 −0
Large diff (190 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/langchain.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/langfuse.json +54 −0
Large diff (54 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/langgraph.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/langsmith.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/launchd.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/leaflet.json +155 −0
Large diff (155 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/lean-theorem-prover.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/lets-encrypt.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/linearmodels.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/litellm.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/llama-cpp.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/llamaindex.json +50 −0
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/lm-studio.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/logseq.json +158 −0
Large diff (158 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mapbox.json +166 −0
Large diff (166 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/maplibre.json +168 −0
Large diff (168 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/marimo.json +178 −0
Large diff (178 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mathematica.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/matlab.json +166 −0
Large diff (167 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/matplotlib.json +163 −0
Large diff (163 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/meilisearch.json +186 −0
Large diff (186 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mendeley.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mermaid.json +166 −0
Large diff (166 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/metabase.json +176 −0
Large diff (176 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/metal.json +44 −0
Large diff (44 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/microsoft-365.json +177 −0
Large diff (177 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/microsoft-teams.json +164 −0
Large diff (164 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/milvus.json +180 −0
Large diff (180 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/minio.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mistral-ai.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mkdocs.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mlx-lm.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mlx-whisper.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mlx.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/model-context-protocol.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mongodb.json +182 −0
Large diff (182 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/moodle.json +174 −0
Large diff (174 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/mysql.json +174 −0
Large diff (174 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/nasdaq-data-link.json +46 −0
Large diff (46 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/nats.json +170 −0
Large diff (170 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/neo4j.json +180 −0
Large diff (180 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/neon.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/neovim.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/nextjs.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/nginx.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/ngrok.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/nodejs.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/notion.json +182 −0
Large diff (182 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/numpy.json +164 −0
Large diff (164 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/observable.json +198 −0
Large diff (198 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/obsidian.json +171 −0
Large diff (171 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/odoo.json +185 −0
Large diff (185 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/ollama.json +52 −0
Large diff (52 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/open-mpi.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openai-agents-sdk.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openai-codex.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openai-platform.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openalex.json +52 −0
Large diff (52 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openapi.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openfigi.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openrouter.json +47 −0
Large diff (47 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/opensearch.json +177 −0
Large diff (177 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openssh.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/openstreetmap.json +174 −0
Large diff (174 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/opentofu.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/orbstack.json +48 −0
Large diff (48 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/orcid.json +49 −0
Large diff (49 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/osf.json +51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/overleaf.json +53 −0
Large diff (53 lines) is not loaded by default to keep the page fast.Load diff
added content/tools/overpass-api.json +35 −0
Large diff (35 lines) is not loaded by default to keep the page fast.Load diff

Diff truncated — file too large.

Menu

Theme