No updates detected yet. GitHub releases will appear here.
ANU: my personal helper for learning and following defense tech — daily brief, agent app, JSON API and site
翻訳待ち
Loading the full README.
Read the full README ↗My personal helper for several things, each on its own tab:
Everything is published as a website and a JSON API on GitHub Pages.
Site: https://johnnyohay.github.io/anu/ (tabs: housing.html, videos.html, docs.html)
API: https://johnnyohay.github.io/anu/api/v1/
Running it costs nothing: GitHub Actions and Pages are free for public repos, and the daily job uses no paid APIs.
config/)| File | What it controls |
|---|---|
config/anu.yaml | Tabs and their order, feature flags, the housing map's starting view and budgets, rental-math defaults, ANU score weights, and custom attributes (new metro metrics written as formulas, e.g. rent / price * 100, that appear on the map, in the rankings, rolled up to states, and in Ask ANU) |
config/videos.yaml | YouTube channels for the Watch tab and their topics |
config/requests.yaml | A feature wishlist shown on the Docs tab; ask Claude Code to "build the planned requests" |
Apply changes with npm run build:api (it checks the files and stops with a clear message on a mistake). The Docs tab lists every option.
npm run housing # Zillow Research (ZHVI, ZORI, forecast, inventory), Freddie Mac rates, housing news → data/housing/
npm run videos # YouTube channel feeds from config/videos.yaml → data/videos.json
npm run housing:coords # one time: map positions for metros from the Census gazetteer
Both run in the daily Action after the defense collector; if a source is down, the previous day's data stays. Cash flow uses flat assumptions (25% down, the current 30-year rate, 45% of rent for costs), adjustable on the page and in config/anu.yaml. Metro numbers are averages; it's research support, not investment advice. Videos are embedded from YouTube, never downloaded; TikTok and Instagram aren't collected because they offer no public feeds and don't allow scraping.
Free lookups: npm run kb -- housing, metros --sort grossYield --largest 100, metro "Cleveland", housing-news rents --state FL, videos drones --shorts 1. Ask ANU has matching tools and two new modes (Housing: where to buy, Something to watch).
npm run collect)src/collect.ts): reads RSS feeds from Breaking Defense, DefenseScoop, Defense News, The War Zone, Air & Space Forces, USNI News, SpaceNews, C4ISRNET, GovConWire, Defense One, the Department of War, CSIS, Defence Blog and ExecutiveGov, keeping articles from the last 3 days.src/build-api.ts): writes public/api/v1/, commits data/, and deploys public/ to GitHub Pages.Runs daily at 10:00 UTC (6:00 New York time in summer, 5:00 in winter). Run it by hand with gh workflow run "Daily brief".
| Endpoint | Contents |
|---|---|
brief/latest.json | Today's morning brief |
brief/<YYYY-MM-DD>.json | A past brief |
briefs.json | Index of all briefs |
updates.json | Every sourced update, newest first |
sectors.json | The 20 sector briefs |
catalysts.json | Upcoming dated events |
companies.json, research.json, ideas.json | Directory, library, build ideas |
all.json | Everything above in one file (what the site loads) |
npm ci
npm run collect # fetch news, add updates, write today's brief if missing
npm run build:api # rebuild public/api/v1 from data/
npx serve public # view the site locally
DESK_DATE=YYYY-MM-DD sets the date; LOOKBACK_DAYS=N changes how far back it reads (default 3).
Everything runs on GitHub, for free, with nothing to install, no extra accounts, no keys and no payments:
.github/workflows/ask.yml answers in a comment, and the answer also appears in the app. Reply on the issue to ask a follow-up.Each reply has the answer, sources with links, a second-opinion fact-check by a different model (every claim marked supported, not in evidence or contradicted, plus a 0-100 score), and a ready-made prompt to paste into free Grok (grok.com) for an independent check.
The models are GitHub Models, free with any GitHub account and called with the workflow's built-in token (permissions: models: read). The free tier allows a limited number of requests per day; if it runs out, ANU says so and works again the next day. The data comes from this repo, and nothing is stored on your device.
This is the beginning of the README. Read the rest at the original. Read the full README ↗