Native Shell
Native Shell:AI 生成的 UI,在你的應用中原生呈現,涵蓋每個平台。iOS、Android、macOS、Windows 與 Linux 上的應用、GPUI 應用與網頁在執行時載入已簽名、沙箱隔離的 TSX 模組並繪製 th
AI 翻譯
Lightsail instances with the same bundle in the same region share one data transfer allowance. See whether you’ll go over this month and how many cheap instances to add to avoid it.
翻譯準備中
開發工具HTML · JavaScriptGitHub @yt1988上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Free single-page calculator for AWS Lightsail data transfer pools: forecast overage and find the cheapest way to add bandwidth. 10 languages.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗English · 简体中文
Live demo: ls.1ms.dog. Open it and go, no sign-up. Or hand it to your AI agent.
If you run anything traffic-heavy on Lightsail, you've probably had one scary bill. Once a plan's included transfer runs out, overage costs $0.09/GB, about $92 per TB. Yet a $5 IPv6 instance comes with 2 TB of transfer, which works out to $2.50 per TB. Same terabyte, more than 30× the price.
What many people miss: Lightsail instances of the same size in the same region share one transfer pool. In a busy month you can add a few small instances and the pool grows with them; when traffic drops, delete them. Billing is hourly, so nothing is wasted.
The hard part is doing the math. Will you go over this month? By how much? How many instances should you add, and when? How is a mid-month instance's allowance prorated? Can overage you've already hit be undone? The answers are scattered across AWS docs and forum threads, and it's easy to get them wrong by hand.
This tool does that math for you. Enter what you've used so far this month, or just your expected monthly total, and it tells you:
No sign-up. Open it and go; your data stays in your own browser. Available in 10 languages, each its own pre-rendered page (for example /zh-cn/ and /ja/), with light and dark themes, and it works on phones.
More from 1ms.dog, all free and open source (hover a name to see what it answers)
Speed & connectivity: 1ms.dog · Network X-Ray · Speed Test · DNS Test · IPv6 Test · CDN Radar · Reach Check
IP & privacy: EgressLens · IP Quality Test · Who Are You · ASN Lookup · Streaming & AI Unlock Check
Cloud & costs: Me2Cloud · Cloud Cost Planner
Command line:
httpslatency·vps2cloud·
| Area | What it does |
|---|---|
| Status banner | One glance: Safe, Overage expected or Over allowance, with the dollar amount and when the allowance runs out |
| Usage input | Type this month's total, or fill in the two bill items TotalDataXfer-In-Bytes and TotalDataXfer-Out-Bytes and they're added up |
| Forecast bar | Usage so far, the projected rest of the month, the allowance line and anything past it |
| Scale-up plan | Compares adding 0, 1, 2… traffic instances (instance cost + overage) and adds the cheapest with one click |
| Base instance | Pick a plan by monthly price; each card shows transfer and cost per TB, with the cheapest marked |
| Traffic instances | Always the same size as the base and IPv6-only (cheapest, and pooled with a dual-stack base); start and delete times per batch |
| Next month | Suggests base + N instances for next month at the current pace |
| Checks | Warns when a forecast is below usage or a deletion time is before creation; imported backups are sanitized |
| Mode | When | How it works |
|---|---|---|
| Actual usage | You entered usage | Daily pace is measured from the first instance's start; overage already incurred can't be offset; new instances are prorated from the next full hour |
| Full-month plan | Only a month-end forecast | Nothing before today counts as used; every running instance counts for the whole month, so the answer is "how many for the full month" |
Rather not fill it in yourself? Hand it to an agent that can browse the web, such as ChatGPT, Claude, Gemini or Cursor. The agent reads one short guide, does the math and gives you a pre-filled link you can check in the app. The Use with AI button at the top of the page has the same content with copy buttons.
Send this to your agent and fill in the blanks:
Read https://ls.1ms.dog/llms.txt first, then use its Lightsail billing rules to work out my data transfer pool.
My setup: region ___, bundle ___ (e.g. $7 / 2 TB transfer), ___ GB used this month (as of ___).
Tell me whether I'll go over this month and the cheapest number of traffic instances to add, and give me a pre-filled calculator link so I can check.
Opening the link loads that setup; your previous data is backed up first and can be restored. In the app, Settings → Copy config link does the reverse, so you can send your current setup to the agent.
| Use case | Ask something like | Access needed |
|---|---|---|
| Will I go over? | I'm on the $12 / 3 TB bundle in Tokyo and have used 2800 GB this month. Will I go over, and how many traffic instances should I add? | None |
| Choose a setup | About 8 TB a month, mostly to users in Southeast Asia. What's the cheapest Lightsail setup? | None |
| Plan next month | Next month I expect about 12,000 GB in Frankfurt on the $7 / 2 TB bundle. How many traffic instances keep the cost lowest? | None |
| Explain my bill | Here are the Lightsail data transfer lines from my bill (paste). How much allowance is left, and will I be charged? | None |
| Usage alerts | Every morning, read my instances' network metrics and warn me if this month is heading for overage. | AWS read-only |
| Auto scale-up | If overage is expected, create the recommended number of IPv6-only instances of my bundle in the same region. Ask me to confirm first. | AWS write, costs money |
Add "Rules and method: https://ls.1ms.dog/llms.txt" to any question so the agent uses the same rules as the app.
Everything is a static file, readable from any origin. There is no server API and no key.
| File | Contents |
|---|---|
| llms.txt | Guide for agents: billing rules, link parameters, result fields |
| prices.json | Bundle prices, allowances and overage rates for every region |
| calc.js | The calculation module (ES module): the exact code the page runs, so results match |
import { calculate, buildLink } from "https://ls.1ms.dog/calc.js";
const prices = await (await fetch("https://ls.1ms.dog/prices.json")).json();
const input = {
region: "us-east-1", sizeGB: 1, usedGB: 3150,
trafficInstances: [{ count: 1, start: "2026-10-11T00:00Z" }]
};
const result = calculate(input, prices);
const link = buildLink(input); // the same setup as a pre-filled link
Main fields returned by calculate:
| Field | Meaning |
|---|---|
status | safe, overage-expected, over-allowance or needs-input |
allowanceGB, usedGB, forecastGB | Allowance, used and month-end forecast (GB) |
overageGB, overageCost, totalCost | Expected overage (GB), overage cost and total cost (USD) |
allowanceRunsOutAt | When the allowance is expected to run out (UTC) |
recommendation | How many traffic instances to add, from when, and what it saves |
nextMonth | Suggested traffic instances and monthly cost for next month |
Common link parameters:
| Param | Meaning | Example |
|---|---|---|
region | AWS Region code | us-east-1 |
size | Bundle, identified by its RAM in GB (prices.json maps it to price and transfer) | 1 |
used | GB used this month (in + out) | 3150 |
forecast | Expected month-end total in GB; without used it plans the full month | 10000 |
nodes | Traffic instances as count@start[~end], UTC | 1@2026-10-11T00:00Z |
All parameters are in llms.txt. Node.js can't import from a URL: download calc.js or use public/calc.js from this repository. calc.js and prices.json are generated from src/app.js by node scripts/build.mjs; npm test checks they're in sync and runs the regression tests.
| Item | Rule |
|---|---|
| What counts | Inbound and outbound traffic both use the allowance |
| What's charged | Only outbound traffic beyond the allowance (the "outbound share" setting, default 100%) |
| Pooling | Same region and same bundle size; dual-stack and IPv6-only of one size pool together |
| Mid-month changes | Billed hourly; allowance prorated by lifetime (not stated in the docs; an AWS Support–reviewed re:Post answer says hourly; can be switched off) |
| Overage already incurred | Can't be offset by adding instances later |
| Units | 1 TB = 1024 GB (the Lightsail API's transferPerMonthInGb is 1024 for a 1 TB plan); billing month = UTC calendar month |
| Half allowance | Mumbai, Sydney, Jakarta, Malaysia, Hong Kong, São Paulo |
Estimates only; your AWS bill is final. This is not an official AWS tool.
The whole app is public/. Any static host works; three ready-made options follow.
Requests for static assets are free and unmetered, and there's no commercial-use restriction. wrangler.toml is set up as a Worker that only serves static assets from public/ (no Worker script), which is the default flow in the Cloudflare dashboard today.
Option A: connect this repository (Workers)
npx wrangler deploy (the default)npx wrangler versions upload or the default; preview builds are optionalOption B: Cloudflare Pages
Workers & Pages → Create → Pages → Connect to Git → Framework preset None, Build command (empty), Build output directory public.
Option C: deploy from your machine
npx wrangler deploy
Option A: Vercel dashboard → Add New → Project → import your fork. No framework, no build command; vercel.json already sets the output directory to public.
Option B:
npx vercel --prod
Note: the free Hobby plan is for non-commercial use only and stops serving once its monthly request quota is used up.
A ready-to-run image is published to Docker Hub as imxjp/lightsail-cost-saver (nginx serving the static page, about 20 MB, linux/amd64 and linux/arm64).
docker run -d --name lightsail-cost-saver -p 8080:80 --restart unless-stopped imxjp/lightsail-cost-saver:latest
Then open http://localhost:8080.
With Docker Compose:
services:
lightsail-cost-saver:
image: imxjp/lightsail-cost-saver:latest
ports:
- "8080:80"
restart: unless-stopped
To build it yourself instead, clone the repository and run docker compose up -d --build.
# Refresh prices from the AWS Price List API into src/app.js (Node 18+)
node scripts/update-prices.mjs
# Set your public URL for SEO: canonical, hreflang, sitemap.xml, robots.txt
node scripts/set-site-url.mjs https://your-domain.example
Both run once on your machine or in CI and add nothing to page load. If a region fails to download, its previous prices are kept.
Edit only public/index.html (the markup, which is also the English page) and src/app.js (the script, including the translations). After a change, run npm run build: it regenerates the script bundle, calc.js, prices.json and the pages for the other languages, with their text written into the HTML so search engines that don't run JavaScript, such as Baidu, can index them. npm test (also run in CI) fails if any generated file is out of date.
public/index.html markup and styles, and the English page
src/app.js the page script: prices, translations, calculation, UI
public/zh-cn/, ja/, … index.html generated: one pre-rendered page per language
public/assets/ logos, self-hosted Geist fonts, favicon and app.<hash>.js (generated)
public/og/<lang>.png link-preview images, 1200 × 630 (node scripts/og.mjs)
public/calc.js, prices.json generated for agents (calculation module, prices)
public/llms.txt how agents can use the tool
scripts/build.mjs regenerates the language pages, script bundle, calc.js and prices.json
scripts/test-calc.mjs regression tests (npm test)
scripts/test-pages.mjs checks every language page is pre-rendered (npm test)
scripts/update-prices.mjs refresh prices from the AWS Price List API
scripts/set-site-url.mjs canonical / hreflang / sitemap / robots for your domain
assets/ 1ms logo masters (light and dark), kept for reference
docs/ README preview screenshots
Dockerfile, nginx.conf container image
.github/workflows/docker.yml builds and pushes the Docker Hub image
.github/workflows/pages.yml optional GitHub Pages deployment
wrangler.toml, vercel.json, netlify.toml
dnstest