@juliantanx/aiusage 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -27
- package/dist/index.js +3277 -907
- package/dist/web/_app/immutable/assets/0.BYjLgame.css +1 -0
- package/dist/web/_app/immutable/assets/11.4MyEKiO6.css +1 -0
- package/dist/web/_app/immutable/assets/12.nNHFRI35.css +1 -0
- package/dist/web/_app/immutable/assets/13.CAQKz1hf.css +1 -0
- package/dist/web/_app/immutable/assets/14.Bcofmxqa.css +1 -0
- package/dist/web/_app/immutable/assets/15.F0aA4smG.css +1 -0
- package/dist/web/_app/immutable/assets/2.GIkI4O03.css +1 -0
- package/dist/web/_app/immutable/assets/3.H3-dDI9U.css +1 -0
- package/dist/web/_app/immutable/assets/4.BOWlKC54.css +1 -0
- package/dist/web/_app/immutable/assets/5.CLn2x9cs.css +1 -0
- package/dist/web/_app/immutable/assets/6.C1lxHTyi.css +1 -0
- package/dist/web/_app/immutable/assets/7.oxd6PqWk.css +1 -0
- package/dist/web/_app/immutable/assets/8.9jvt5Dym.css +1 -0
- package/dist/web/_app/immutable/assets/9.DsmA__AV.css +1 -0
- package/dist/web/_app/immutable/assets/ToolSelector.BewzNVhC.css +1 -0
- package/dist/web/_app/immutable/assets/ToolSelector.BqfI2BMz.css +1 -0
- package/dist/web/_app/immutable/assets/_layout.D8R7GvV-.css +1 -0
- package/dist/web/_app/immutable/assets/_page.4MyEKiO6.css +1 -0
- package/dist/web/_app/immutable/assets/_page.9jvt5Dym.css +1 -0
- package/dist/web/_app/immutable/assets/_page.BOWlKC54.css +1 -0
- package/dist/web/_app/immutable/assets/_page.Bcofmxqa.css +1 -0
- package/dist/web/_app/immutable/assets/_page.C1lxHTyi.css +1 -0
- package/dist/web/_app/immutable/assets/_page.CFfU6gQq.css +1 -0
- package/dist/web/_app/immutable/assets/_page.CLn2x9cs.css +1 -0
- package/dist/web/_app/immutable/assets/_page.CMG6gS2t.css +1 -0
- package/dist/web/_app/immutable/assets/_page.DXX8tyXM.css +1 -0
- package/dist/web/_app/immutable/assets/_page.F0aA4smG.css +1 -0
- package/dist/web/_app/immutable/assets/_page.H3-dDI9U.css +1 -0
- package/dist/web/_app/immutable/assets/_page.ZSDsIDry.css +1 -0
- package/dist/web/_app/immutable/assets/_page.oxd6PqWk.css +1 -0
- package/dist/web/_app/immutable/chunks/ToolSelector.CofvKVw2.js +2 -0
- package/dist/web/_app/immutable/chunks/api.Mv_KcGhp.js +1 -0
- package/dist/web/_app/immutable/chunks/{entry.BDsSAg1a.js → entry.PDoHFbXz.js} +1 -1
- package/dist/web/_app/immutable/chunks/i18n.CwV3KceS.js +1 -0
- package/dist/web/_app/immutable/chunks/index.66Vu9Sio.js +1 -0
- package/dist/web/_app/immutable/chunks/{index.CNvYz5e_.js → index.m3oCcA6N.js} +1 -1
- package/dist/web/_app/immutable/chunks/scheduler.DsWd5xup.js +1 -0
- package/dist/web/_app/immutable/chunks/{stores.mBipGgjw.js → stores.BSI_cVy6.js} +1 -1
- package/dist/web/_app/immutable/chunks/{stores.BYIFXXy3.js → stores.Botc0ioY.js} +1 -1
- package/dist/web/_app/immutable/entry/app.CoPtpbXI.js +2 -0
- package/dist/web/_app/immutable/entry/start.CaOJNprV.js +1 -0
- package/dist/web/_app/immutable/nodes/0.CZMa2uzk.js +142 -0
- package/dist/web/_app/immutable/nodes/{1.C4vnvuzM.js → 1.DJI2NNga.js} +1 -1
- package/dist/web/_app/immutable/nodes/10.DTaETIM6.js +1 -0
- package/dist/web/_app/immutable/nodes/11.CScZqjVc.js +1 -0
- package/dist/web/_app/immutable/nodes/12.DeLNKhlw.js +1 -0
- package/dist/web/_app/immutable/nodes/13.BFaBQy6e.js +1 -0
- package/dist/web/_app/immutable/nodes/14.BgJEC28r.js +1 -0
- package/dist/web/_app/immutable/nodes/15.DjuCO6OE.js +1 -0
- package/dist/web/_app/immutable/nodes/2.CoxR54dV.js +3 -0
- package/dist/web/_app/immutable/nodes/3.Bua2oewW.js +1 -0
- package/dist/web/_app/immutable/nodes/4.DJwmYYKI.js +1 -0
- package/dist/web/_app/immutable/nodes/5.CXmtjVJL.js +1 -0
- package/dist/web/_app/immutable/nodes/6.kpxBlrHt.js +1 -0
- package/dist/web/_app/immutable/nodes/7.LSfdx4vz.js +9 -0
- package/dist/web/_app/immutable/nodes/8.ByAI01dT.js +1 -0
- package/dist/web/_app/immutable/nodes/9.Ubt4Bfxd.js +1 -0
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +10 -10
- package/dist/web/wechat-support-qr.jpg +0 -0
- package/package.json +3 -4
- package/dist/web/_app/immutable/assets/0.C3RIkHY2.css +0 -1
- package/dist/web/_app/immutable/assets/10.C9BKssg5.css +0 -1
- package/dist/web/_app/immutable/assets/11.D51Gzh6j.css +0 -1
- package/dist/web/_app/immutable/assets/12.MAt3PLLc.css +0 -1
- package/dist/web/_app/immutable/assets/13.CYY7rvzI.css +0 -1
- package/dist/web/_app/immutable/assets/2.CLCMeZwn.css +0 -1
- package/dist/web/_app/immutable/assets/3.BB9nMGBG.css +0 -1
- package/dist/web/_app/immutable/assets/4.CUknm1Jh.css +0 -1
- package/dist/web/_app/immutable/assets/5.BvcBvBEs.css +0 -1
- package/dist/web/_app/immutable/assets/6.BETPk561.css +0 -1
- package/dist/web/_app/immutable/assets/7.BeGOLIpG.css +0 -1
- package/dist/web/_app/immutable/assets/8.yw0F4oCm.css +0 -1
- package/dist/web/_app/immutable/assets/ToolSelector.BRqFUj1Q.css +0 -1
- package/dist/web/_app/immutable/assets/ToolSelector.Bqx3ytrl.css +0 -1
- package/dist/web/_app/immutable/assets/_layout.BqRkZ3UP.css +0 -1
- package/dist/web/_app/immutable/assets/_page.BB9nMGBG.css +0 -1
- package/dist/web/_app/immutable/assets/_page.BETPk561.css +0 -1
- package/dist/web/_app/immutable/assets/_page.BLq-3aJQ.css +0 -1
- package/dist/web/_app/immutable/assets/_page.BeGOLIpG.css +0 -1
- package/dist/web/_app/immutable/assets/_page.BvEGYIGb.css +0 -1
- package/dist/web/_app/immutable/assets/_page.BvcBvBEs.css +0 -1
- package/dist/web/_app/immutable/assets/_page.C9BKssg5.css +0 -1
- package/dist/web/_app/immutable/assets/_page.CQBzp_Oe.css +0 -1
- package/dist/web/_app/immutable/assets/_page.CUknm1Jh.css +0 -1
- package/dist/web/_app/immutable/assets/_page.CYY7rvzI.css +0 -1
- package/dist/web/_app/immutable/assets/_page.MAt3PLLc.css +0 -1
- package/dist/web/_app/immutable/chunks/ToolSelector.CCE1hHr0.js +0 -2
- package/dist/web/_app/immutable/chunks/api.CTjBjPiU.js +0 -1
- package/dist/web/_app/immutable/chunks/index.BXQEgizy.js +0 -1
- package/dist/web/_app/immutable/chunks/scheduler.DeaWU70L.js +0 -1
- package/dist/web/_app/immutable/entry/app.CCbAFnKJ.js +0 -2
- package/dist/web/_app/immutable/entry/start.BDGHATsW.js +0 -1
- package/dist/web/_app/immutable/nodes/0.vOgxhWzP.js +0 -1
- package/dist/web/_app/immutable/nodes/10.BejenNwL.js +0 -1
- package/dist/web/_app/immutable/nodes/11.Dx1YcRkP.js +0 -1
- package/dist/web/_app/immutable/nodes/12.C9dQuDmx.js +0 -1
- package/dist/web/_app/immutable/nodes/13.VP7fU2h5.js +0 -1
- package/dist/web/_app/immutable/nodes/2.DniTC2eC.js +0 -3
- package/dist/web/_app/immutable/nodes/3.BY0PLmXV.js +0 -1
- package/dist/web/_app/immutable/nodes/4.BUb_3Atw.js +0 -1
- package/dist/web/_app/immutable/nodes/5.DJ0O-s5e.js +0 -1
- package/dist/web/_app/immutable/nodes/6.nquf-x9G.js +0 -9
- package/dist/web/_app/immutable/nodes/7.BDm05vE_.js +0 -1
- package/dist/web/_app/immutable/nodes/8.mB-sVW7r.js +0 -1
- package/dist/web/_app/immutable/nodes/9.8PYvwJik.js +0 -1
- /package/dist/web/_app/immutable/assets/{9.DpWloLoX.css → 10.DpWloLoX.css} +0 -0
package/README.md
CHANGED
|
@@ -1,30 +1,86 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<img src="https://cdn.jsdelivr.net/gh/juliantanx/aiusage@main/packages/site/static/logo-icon.svg" alt="AIUsage logo" width="42" align="absmiddle" />
|
|
3
|
+
AIUsage
|
|
4
|
+
</h1>
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
<p align="center">
|
|
7
|
+
Local-first usage tracker for AI coding assistants.
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/@juliantanx/aiusage"><img src="https://img.shields.io/npm/v/@juliantanx/aiusage" alt="npm version" /></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@juliantanx/aiusage"><img src="https://img.shields.io/npm/dm/@juliantanx/aiusage" alt="npm downloads" /></a>
|
|
13
|
+
<a href="https://github.com/juliantanx/aiusage/actions/workflows/test.yml"><img src="https://github.com/juliantanx/aiusage/actions/workflows/test.yml/badge.svg" alt="CI" /></a>
|
|
14
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT" /></a>
|
|
15
|
+
</p>
|
|
6
16
|
|
|
7
|
-
|
|
17
|
+
<p align="center">
|
|
18
|
+
<strong><a href="https://aiusage.jtanx.com">Website</a></strong> ·
|
|
19
|
+
<strong><a href="https://aiusage.jtanx.com/docs">Docs</a></strong> ·
|
|
20
|
+
<strong><a href="https://aiusage.jtanx.com/leaderboard">Leaderboard</a></strong> ·
|
|
21
|
+
English | <a href="https://github.com/juliantanx/aiusage/blob/main/README_zh.md">中文</a>
|
|
22
|
+
</p>
|
|
8
23
|
|
|
9
|
-
Track
|
|
24
|
+
Track tokens, cost, sessions, models, projects, tool calls, and quota pressure across **22 AI coding tools** in one local dashboard. Local use needs no account, sends no telemetry, and does not require cloud sync.
|
|
10
25
|
|
|
11
26
|
<p align="center">
|
|
12
|
-
<img src="https://
|
|
13
|
-
<img src="https://raw.githubusercontent.com/juliantanx/aiusage/a527444cf87a9c1e92f1440282ed4e94f744b910/packages/site/static/screenshots/overview.png" alt="aiusage overview dashboard" width="32%" />
|
|
14
|
-
<img src="https://raw.githubusercontent.com/juliantanx/aiusage/a527444cf87a9c1e92f1440282ed4e94f744b910/packages/site/static/screenshots/sessions.png" alt="aiusage sessions dashboard" width="32%" />
|
|
27
|
+
<img src="https://cdn.jsdelivr.net/gh/juliantanx/aiusage@b179e5a37c92e7040a07b84a7b2048821d120aed/packages/site/static/screenshots/aiusage-demo.gif" alt="AIUsage dashboard demo" width="92%" />
|
|
15
28
|
</p>
|
|
16
29
|
|
|
30
|
+
## Highlights
|
|
31
|
+
|
|
32
|
+
- **One local dashboard** for tokens, cost, sessions, models, projects, tool calls, and quotas.
|
|
33
|
+
- **Broad parser support** for Claude Code, Codex, OpenCode, Cursor, Copilot, Gemini CLI, and more.
|
|
34
|
+
- **Optional sync** through official cloud sync, GitHub, S3, R2, or MinIO.
|
|
35
|
+
- **Optional public leaderboard** with signed aggregate uploads only.
|
|
36
|
+
- **Desktop widget** for a tray/menu-bar glance at recent usage.
|
|
37
|
+
- **Private by default**: local parsing and local dashboards do not upload your prompts, completions, source code, or file paths.
|
|
38
|
+
|
|
17
39
|
## Quick Start
|
|
18
40
|
|
|
19
|
-
**
|
|
41
|
+
**Requirements:** Node.js 20+ on macOS, Linux, or Windows.
|
|
20
42
|
|
|
21
43
|
```bash
|
|
22
44
|
npm install -g @juliantanx/aiusage
|
|
23
|
-
aiusage parse
|
|
24
45
|
aiusage serve
|
|
25
46
|
```
|
|
26
47
|
|
|
27
|
-
Open `http://localhost:3847` to
|
|
48
|
+
Open `http://localhost:3847` to use the dashboard. `serve` parses once on startup and then serves the local web UI.
|
|
49
|
+
|
|
50
|
+
Prefer pnpm:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pnpm add -g @juliantanx/aiusage
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Use Docker:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
docker run -d \
|
|
60
|
+
-p 3847:3847 \
|
|
61
|
+
-v ~/.aiusage:/root/.aiusage \
|
|
62
|
+
juliantanx/aiusage
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Docker persists AIUsage data with the `~/.aiusage` mount. To parse AI tool logs from the host, also mount each source log directory and configure the matching `AIUSAGE_*_PATH` variable. See the [Docker docs](https://aiusage.jtanx.com/docs#docker).
|
|
66
|
+
|
|
67
|
+
## Common Commands
|
|
68
|
+
|
|
69
|
+
| Command | What it does |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `aiusage` / `aiusage summary` | Print a terminal summary |
|
|
72
|
+
| `aiusage parse` | Parse supported local AI tool logs |
|
|
73
|
+
| `aiusage serve` | Start the local dashboard on port `3847` |
|
|
74
|
+
| `aiusage status` | Show data source and local database status |
|
|
75
|
+
| `aiusage export --range month` | Export usage data |
|
|
76
|
+
| `aiusage init` | Configure optional sync |
|
|
77
|
+
| `aiusage sync` | Sync with the configured backend |
|
|
78
|
+
| `aiusage widget` | Launch the desktop tray widget |
|
|
79
|
+
| `aiusage leaderboard` | View public leaderboard rankings |
|
|
80
|
+
| `aiusage login` / `aiusage upload` | Authorize this device and upload aggregate leaderboard data |
|
|
81
|
+
| `aiusage pm2-start` | Run dashboard and widget as PM2 background services |
|
|
82
|
+
|
|
83
|
+
Full CLI reference: [aiusage.jtanx.com/docs#cli-reference](https://aiusage.jtanx.com/docs#cli-reference).
|
|
28
84
|
|
|
29
85
|
## Supported Tools
|
|
30
86
|
|
|
@@ -36,36 +92,105 @@ Open `http://localhost:3847` to explore the dashboard.
|
|
|
36
92
|
| `Roo Code` | `Zed` | `Goose` | `oh-my-pi` | `pi` |
|
|
37
93
|
| `Craft` | `Droid` | | | |
|
|
38
94
|
|
|
39
|
-
|
|
95
|
+
Default paths and environment variable overrides are documented in [Data Sources](https://aiusage.jtanx.com/docs#settings-sources) and [Source Env Vars](https://aiusage.jtanx.com/docs#settings-env).
|
|
96
|
+
|
|
97
|
+
## Dashboard Password
|
|
98
|
+
|
|
99
|
+
The local dashboard is open on localhost by default. Set `AIUSAGE_DASHBOARD_PASSWORD` to protect dashboard APIs.
|
|
100
|
+
|
|
101
|
+
| Shell | Command |
|
|
102
|
+
|---|---|
|
|
103
|
+
| macOS / Linux | `AIUSAGE_DASHBOARD_PASSWORD="change-me" aiusage serve` |
|
|
104
|
+
| Windows PowerShell | `$env:AIUSAGE_DASHBOARD_PASSWORD="change-me"; aiusage serve` |
|
|
105
|
+
| Windows CMD | `set AIUSAGE_DASHBOARD_PASSWORD=change-me && aiusage serve` |
|
|
40
106
|
|
|
41
|
-
|
|
107
|
+
For PM2 background services, pass the same variable when starting `aiusage pm2-start`, and use `pm2 restart aiusage-server --update-env` after changing it. Details: [Dashboard Password](https://aiusage.jtanx.com/docs#dashboard-password) and [PM2](https://aiusage.jtanx.com/docs#pm2).
|
|
42
108
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
109
|
+
## Privacy and Data
|
|
110
|
+
|
|
111
|
+
AIUsage is designed to be local-first.
|
|
112
|
+
|
|
113
|
+
- Local parsing reads tool logs and stores parsed usage in `~/.aiusage/cache.db`.
|
|
114
|
+
- Local dashboard mode does not require an account and does not send telemetry.
|
|
115
|
+
- Optional sync is user-configured and can use official cloud sync, GitHub, S3, R2, or MinIO.
|
|
116
|
+
- Optional leaderboard uploads contain aggregate token totals for ranking periods. They do not include prompts, completions, source code, file paths, or local cost estimates.
|
|
117
|
+
- Cost is an estimate based on pricing metadata and can change when pricing is refreshed or recalculated.
|
|
118
|
+
- Historical totals depend on whether each AI tool still retains its source logs or local databases.
|
|
119
|
+
|
|
120
|
+
Security issues should be reported privately when possible. See [SECURITY.md](./SECURITY.md).
|
|
121
|
+
|
|
122
|
+
## Sync and Leaderboard
|
|
123
|
+
|
|
124
|
+
Sync and leaderboard are independent optional features.
|
|
125
|
+
|
|
126
|
+
- **Sync** keeps your own devices aligned through official cloud sync, GitHub, S3, R2, or MinIO. Configure it with `aiusage init`, then run `aiusage sync`.
|
|
127
|
+
- **Leaderboard** is public ranking for users who explicitly upload aggregate totals. Authorize a device with `aiusage login`, then run `aiusage upload`.
|
|
128
|
+
- Anonymous mode is available in [site settings](https://aiusage.jtanx.com/settings) for leaderboard participation.
|
|
129
|
+
|
|
130
|
+
The official site handles accounts, OAuth login, profile settings, authorized devices, upload review status, and admin moderation. The CLI handles local parsing, local dashboards, sync, terminal summaries, and signed uploads.
|
|
131
|
+
|
|
132
|
+
## Desktop Widget
|
|
133
|
+
|
|
134
|
+
Install the optional tray/menu-bar widget:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
npm install -g @juliantanx/aiusage-widget
|
|
138
|
+
aiusage-widget
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The widget reads the same local AIUsage database and can open the full dashboard from its tray menu. See [Widget docs](https://aiusage.jtanx.com/docs#widget).
|
|
142
|
+
|
|
143
|
+
## Development
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
git clone https://github.com/juliantanx/aiusage.git
|
|
147
|
+
cd aiusage
|
|
148
|
+
pnpm install
|
|
149
|
+
pnpm build
|
|
150
|
+
pnpm test
|
|
151
|
+
pnpm dev
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Project layout:
|
|
155
|
+
|
|
156
|
+
| Path | Purpose |
|
|
157
|
+
|---|---|
|
|
158
|
+
| `packages/core` | Shared types, schema, pricing, and utilities |
|
|
159
|
+
| `packages/cli` | Published CLI, parsers, local API server, sync, PM2 helpers |
|
|
160
|
+
| `packages/web` | Local dashboard UI bundled into the CLI |
|
|
161
|
+
| `packages/widget` | Electron tray/menu-bar widget |
|
|
162
|
+
| `packages/site` | Official website, docs, accounts, uploads, leaderboard |
|
|
163
|
+
|
|
164
|
+
Contributions are welcome. Read [CONTRIBUTING.md](./CONTRIBUTING.md), use the issue templates, and run `pnpm test` before opening a PR.
|
|
46
165
|
|
|
47
166
|
## Documentation
|
|
48
167
|
|
|
49
|
-
|
|
168
|
+
- [Full docs](https://aiusage.jtanx.com/docs)
|
|
169
|
+
- [CLI reference](https://aiusage.jtanx.com/docs#cli-reference)
|
|
170
|
+
- [Docker deployment](https://aiusage.jtanx.com/docs#docker)
|
|
171
|
+
- [Sync setup](https://aiusage.jtanx.com/docs#sync)
|
|
172
|
+
- [Widget](https://aiusage.jtanx.com/docs#widget)
|
|
173
|
+
- [Changelog](./CHANGELOG.md)
|
|
174
|
+
- [Security policy](./SECURITY.md)
|
|
175
|
+
|
|
176
|
+
## Community
|
|
50
177
|
|
|
51
|
-
|
|
178
|
+
- Bugs: [GitHub Issues](https://github.com/juliantanx/aiusage/issues/new?template=bug_report.md)
|
|
179
|
+
- Feature requests: [GitHub Issues](https://github.com/juliantanx/aiusage/issues/new?template=feature_request.md)
|
|
180
|
+
- Questions: [GitHub Discussions](https://github.com/juliantanx/aiusage/discussions)
|
|
52
181
|
|
|
53
|
-
[**linux.do**](https://linux.do/)
|
|
182
|
+
[**linux.do**](https://linux.do/) - thanks to the linux.do community for support and inspiration during the development of this project.
|
|
54
183
|
|
|
55
184
|
## Star History
|
|
56
185
|
|
|
57
186
|
<a href="https://www.star-history.com/?repos=juliantanx%2Faiusage&type=date&logscale=&legend=top-left">
|
|
58
187
|
<picture>
|
|
59
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=juliantanx/aiusage&type=date&theme=dark&legend=top-left
|
|
60
|
-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=juliantanx/aiusage&type=date&legend=top-left
|
|
61
|
-
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=juliantanx/aiusage&type=date&legend=top-left
|
|
188
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=juliantanx/aiusage&type=date&theme=dark&logscale&legend=top-left" />
|
|
189
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=juliantanx/aiusage&type=date&logscale&legend=top-left" />
|
|
190
|
+
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=juliantanx/aiusage&type=date&logscale&legend=top-left" />
|
|
62
191
|
</picture>
|
|
63
192
|
</a>
|
|
64
193
|
|
|
65
|
-
## Contributing
|
|
66
|
-
|
|
67
|
-
Contributions are welcome! See [CONTRIBUTING.md](./CONTRIBUTING.md) for how to get started.
|
|
68
|
-
|
|
69
194
|
## License
|
|
70
195
|
|
|
71
196
|
[MIT](./LICENSE)
|