ocd/README.md

59 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

# ocd
Console dashboard for opencode account limits and balance.
`ocd` reads a config of opencode accounts and auth cookies. It scrapes the
opencode Zen page for balance and the Go page for limits. It prints usage for
the 5-hour, week, and month time frames, each reset time, the next update time,
and remaining balance.
## Install
```
cargo install --path .
```
## Configure
```
ocd config init
$EDITOR ocd.toml
ocd config check # lists accounts and workspaces, no network
```
Each account section carries `default_workspace` and optional `extra_workspaces`.
```toml
[[account]]
name = "work"
cookie = "${OCD_COOKIE_WORK}"
default_workspace = "wrk_01KYNTSGXF7GFXMAMT36N3GH21"
extra_workspaces = ["wrk_02KYNTSGXF7GFXMAMT36N3GH21"]
```
`${VAR}` expands from the environment so cookies stay out of the file.
## Run
```
ocd pretty # default terminal output
ocd raw json # one JSON object for widgets and agent plugins
ocd raw plain # TSV-ish lines for shell and awk
ocd fetch # update cache, print nothing; for cron
ocd cache ls | clear
ocd -a work -w wrk_02KYNTSGXF7GFXMAMT36N3GH21 pretty # one account, one workspace
```
## Politeness
Per workspace two requests run at once (Zen, Go). The walk paces 500 ms between
workspaces. Cache TTL defaults to 180 s. Use `--force-refresh` to bypass.
## Status
The HTTP client, cache, pacing, and renderer work. The `src/scrape.rs`
selectors target the real Zen balance element and the Go usage frames, and
parse correctly against captured pages (see the `scrape::tests` unit test).
Live fetching needs a valid account cookie and a workspace id. Conditional GET
headers are not yet sent; the TTL cache handles politeness alone. See
`DESIGN.md`.