Fork me on GitHub

go-aiquota

Your AI usage quotas โ€” session and weekly limits, across multiple accounts โ€” watched from the menu bar, in parallel.

multi-accountgRPC plugin architectureOS keyringno manual cookie pastemacOS ยท Linux ยท Windows
zsh
$ gh repo list go-aiquota

go-aiquota is a cross-platform menu-bar app that watches AI usage quotas โ€” session and weekly limits โ€” across multiple accounts at once (Claude Max, Claude Team Premium, Claude Team Standard today). Each provider is a separate subprocess plugin talking a small hashicorp/go-plugin gRPC contract (go-aiquota/proto), so adding a provider is writing a plugin, not forking the host. Onboarding an account drives a real, isolated embedded browser straight to the provider's own login page โ€” no manual cookie copying, no devtools.

Adding a provider

Implement the QuotaProvider contract and serve it as a go-plugin subprocess:

func (p *myProvider) Describe(...) (*quotapb.ProviderInfo, error) { ... }
func (p *myProvider) FetchQuota(...) (*quotapb.QuotaSnapshot, error) { ... }

hcplugin.Serve(&hcplugin.ServeConfig{
    HandshakeConfig: plugin.Handshake,
    Plugins:         plugin.Map(p),
})

Repositories

The host, the shared contract, and the first provider plugin โ€” mirrored from the live GitHub repos.

tray host app

The cross-platform menu-bar host: per-account tray items, the plugin manager, and the isolated onboarding window.

CI Go Reference

proto contract

The shared QuotaProvider gRPC contract between the host and every provider plugin, plus the credential-safety types both sides build on.

CI Go Reference

plugin-claude provider plugin

The reference QuotaProvider implementation, for Claude Max / Team Premium / Team Standard.

CI Go Reference

A credential is never written to disk in the clear, never logged, and lives only in the OS keyring โ€” secret.Secret and shape-based redaction make it hard to accidentally print one. Onboarding always drives a real embedded browser (isolated per account) rather than a scripted client trying to impersonate one.