Skip to content

Repository files navigation

Aswincloud

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

🗂️ Public Repositories

RepositoryDescriptionLanguageUpdated
ttperfA streamlined CLI tool for profiling Tenstorrent's TT-Metal tests and extracting device kernel performance metricsPython42026-07-27
ttnn-performance-dashboardDay-by-day performance tracking dashboard for Tenstorrent TT-Metal TTNN eltwise operations.JavaScript12026-08-22
portfolioProfessional portfolio website built with React, Vite, and Tailwind CSSJavaScript12026-08-19
whatsapp_botWhatsApp AI assistant bot powered by Claude — conversational AI for everyday usePython02026-08-17
3d_printing3D print portfolio and showcase site — custom figurines, decor, and art pieces. Orders via DMJavaScript02026-08-22
AiBuddyAI-powered chatbot for Microsoft Teams — brings conversational AI into team channels and group chatsPython02026-07-27
authShared, 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.TypeScript02026-08-03
blogblog.aswincloud.com - homelab & home automationCSS02026-08-17
chatFull-viewport iframe wrapper hosting the self-hosted Chatwoot widget at chat.aswincloud.comHTML02026-07-27
cheap-domain(archived)Get a custom subdomain under aswincloud.com for just ₹20/month02026-07-25
gh-org-guardSelf-healing GitHub org governance: reconcile branch protection, merge queue, reviews & secret-hygiene across every repo — one weekly workflow. Reference implementation.Python12026-07-27
ghadiffPython CLI to compare two GitHub Actions workflow runs — timing, status, and job/step-level diffs with text, JSON, Markdown, and HTML outputPython02026-07-27
invoicerCreate, preview, download and email professional invoices. Cloudflare Pages + Functions + D1.JavaScript02026-08-17
pr-review-checkerWeb app that analyzes GitHub PRs against CODEOWNERS to compute minimum required approvals, with AI-powered approval predictions from team historyJavaScript12026-08-11
resumeAswin — Software Engineer. Resume built from HTML/CSS, auto-rendered to PDF.HTML02026-08-20
shiptrackFree, open-source, self-hostable shipment tracking for Indian & international couriers — built with Next.js + TypeScriptTypeScript12026-08-14
slack-join(archived)JavaScript02025-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.TypeScript02026-07-27
tg-torrentTelegram bot to remotely add torrents to qBittorrent via magnet links or .torrent filesPython02026-07-05
ttnn-ops-coverageInteractive 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.JavaScript02026-08-22
ttnn-web-calculatorWeb app to test and visualize 150+ Tenstorrent TTNN operations in real time, with PyTorch comparisonHTML02026-07-05
word-game-botTelegram word chain game bot (aiogram v3). Fork of jonowo/on9wordchainbot with DB-backed admin & group authorization.Python02026-08-17

🤖 Org automation

Workflows in this repo that run against the whole org:

WorkflowScheduleWhat it does
reconcile-rulesets.ymlMondays 06:17 UTCReasserts the branch-protection baseline on every public repo
security-sweep.ymlMondays 06:17 UTCAudits secret scanning + push protection, opens a tracking issue
site-probe.ymlevery 15 minChecks every hosted site is serving; fails the run and emails if not
sync-security-triage.ymlevery 6 hMirrors 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:

FieldRequiredMeaning
nameyesShort label used in the report and the tracking issue title
urlyesExact URL to request
expectnoAcceptable status codes, default [200]
containsnoSubstring that must appear in the body (catches "200 but blank page")
redirect_tonoSubstring the Location header must contain, when the answer is a 3xx
notenoWhy 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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages