Skip to content

Repository files navigation

Aswincloud

Welcome to Aswincloud – an organization focused on developer tooling, performance profiling, and modern web applications.

🗂️ Public Repositories

Repository Description Language Updated
ttperf A streamlined CLI tool for profiling Tenstorrent's TT-Metal tests and extracting device kernel performance metrics Python 3 2026-07-27
ttnn-performance-dashboard Day-by-day performance tracking dashboard for Tenstorrent TT-Metal TTNN eltwise operations. JavaScript 1 2026-08-03
portfolio Professional portfolio website built with React, Vite, and Tailwind CSS JavaScript 1 2026-08-03
whatsapp_bot WhatsApp AI assistant bot powered by Claude — conversational AI for everyday use Python 0 2026-08-03
3d_printing 3D print portfolio and showcase site — custom figurines, decor, and art pieces. Orders via DM HTML 0 2026-08-04
AiBuddy AI-powered chatbot for Microsoft Teams — brings conversational AI into team channels and group chats Python 0 2026-07-27
auth Shared, framework-agnostic auth primitives for Cloudflare Workers sites — signed sessions, HMAC tokens, PBKDF2 passwords, owner allowlists, OAuth — plus an optional React login UI. Published as @aswincloud/auth. TypeScript 0 2026-08-03
blog blog.aswincloud.com - homelab & home automation CSS 0 2026-08-03
chat Full-viewport iframe wrapper hosting the self-hosted Chatwoot widget at chat.aswincloud.com HTML 0 2026-07-27
cheap-domain (archived) Get a custom subdomain under aswincloud.com for just ₹20/month 0 2026-07-25
gh-org-guard Self-healing GitHub org governance: reconcile branch protection, merge queue, reviews & secret-hygiene across every repo — one weekly workflow. Reference implementation. Python 1 2026-07-27
ghadiff Python CLI to compare two GitHub Actions workflow runs — timing, status, and job/step-level diffs with text, JSON, Markdown, and HTML output Python 0 2026-07-27
invoicer Create, preview, download and email professional invoices. Cloudflare Pages + Functions + D1. JavaScript 0 2026-08-03
pr-review-checker Web app that analyzes GitHub PRs against CODEOWNERS to compute minimum required approvals, with AI-powered approval predictions from team history JavaScript 1 2026-08-02
resume Aswin — Software Engineer. Resume built from HTML/CSS, auto-rendered to PDF. HTML 0 2026-08-03
shiptrack Free, open-source, self-hostable shipment tracking for Indian & international couriers — built with Next.js + TypeScript TypeScript 1 2026-08-02
slack-join (archived) JavaScript 0 2025-07-15
status-page 🟢 Self-hosted, BetterStack-style live status page for a home network — Cloudflare Worker + D1 + a Docker prober, with email & Slack alerts. Runs on the free tier. TypeScript 0 2026-07-27
tg-torrent Telegram bot to remotely add torrents to qBittorrent via magnet links or .torrent files Python 0 2026-07-05
ttnn-ops-coverage Interactive zero-dependency dashboard for the TTNN (Tenstorrent) op test matrix — every op across dtype × layout × memory, with per-config PCC/ULP accuracy and run-to-run diffs. Deploys to Cloudflare Workers. JavaScript 0 2026-08-04
ttnn-web-calculator Web app to test and visualize 150+ Tenstorrent TTNN operations in real time, with PyTorch comparison HTML 0 2026-07-05
word-game-bot Telegram word chain game bot (aiogram v3). Fork of jonowo/on9wordchainbot with DB-backed admin & group authorization. Python 0 2026-07-27

🤖 Org automation

Workflows in this repo that run against the whole org:

Workflow Schedule What it does
reconcile-rulesets.yml Mondays 06:17 UTC Reasserts the branch-protection baseline on every public repo
security-sweep.yml Mondays 06:17 UTC Audits secret scanning + push protection, opens a tracking issue
site-probe.yml every 15 min Checks every hosted site is serving; fails the run and emails if not
sync-security-triage.yml every 6 h Mirrors open security alerts onto the Security Triage board

Site uptime probe

scripts/probe_sites.py requests every site in scripts/sites.json and fails the run if any is unhealthy. Stdlib only, no dependencies.

To add or remove a site, edit scripts/sites.json — one object per site:

Field Required Meaning
name yes Short label used in the report and the tracking issue title
url yes Exact URL to request
expect no Acceptable status codes, default [200]
contains no Substring that must appear in the body (catches "200 but blank page")
redirect_to no Substring the Location header must contain, when the answer is a 3xx
note no Why a non-200 is correct, for the next reader

contains is checked only on non-redirect answers and redirect_to only on redirects, so a site whose healthy answer differs by network can set both and have each verified against whichever response actually arrives.

Sites are probed at / rather than a health endpoint on purpose: the root is the user-visible surface and exercises static-asset serving too, which a Worker-only health route does not.

console expects 302, and that is correct — it sits behind Cloudflare Access, so a redirect to the login page means it is up. The probe deliberately does not follow redirects, or that 302 would be invisible. Don't "fix" it to 200. redirect_to pins where it redirects, because "expect 302" on its own would pass on any redirect at all.

The homelab services (truenas, watch, torrent) are probed at their real UI paths rather than /, because the roots redirect. They also use contains so a reachable-but-broken service is caught: an nginx or reverse-proxy error page answering 200 would otherwise read as healthy. truenas matches on its <base> tag because its Angular SPA sends an empty <title>.

truenas answers differently depending on who asks. It is an Access app with a Bypass Home IP policy, so from the home network it returns the real UI (200), while GitHub's runners get Access's login redirect (302). Both are healthy, so both are accepted and each is checked against the answer that arrives. Two consequences worth remembering:

  • A local DRY_RUN run is not the runner's view. Running the probe from home exercises the bypass path only, so a config that is broken for Actions can still look green locally. That is exactly how the first live run failed after a clean local check.
  • For an Access-gated site, green means Cloudflare's edge is up — not the origin. Access redirects before the request ever reaches the box, so an unplugged NAS still returns a healthy-looking 302. Real origin monitoring for the homelab belongs on status.aswincloud.com, which probes from inside the network.

Email is sent on state change only. An open issue titled 🔴 Site down — <name> is the state store, so a site that stays down gets one email and one issue, with later runs adding a comment. Recovery closes the issue and sends one more email. A site is only declared down after 3 failed attempts, so a single TCP reset doesn't page anyone.

Secrets (all optional — if any is unset the email is skipped with a warning and the run still fails, so a missing key can never mask an outage): RESEND_API_KEY, ALERT_FROM, ALERT_TO.

Run it locally without emailing anyone:

DRY_RUN=true python3 scripts/probe_sites.py

Exit codes: 0 all up · 1 something is down · 2 the probe itself couldn't run (missing or malformed sites.json).

📬 Contact

For questions or contributions, feel free to open an issue in the relevant repository.

About

Organization-wide defaults, community health files, and CI/CD governance for the Aswincloud org

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages