Konfiguration
OpenLimiter hält alles in einem Statusverzeichnis unter deinem eigenen Benutzerkonto: eine Konfigurationsdatei, einen Cache, einen Lock, und das optionale manuelle Dokument. Diese Seite sagt, wo das liegt und was jede Datei tut.
Das Statusverzeichnis
| Plattform | Pfad |
|---|---|
| Windows | %LOCALAPPDATA%\openlimiter |
| macOS | ~/Library/Application Support/openlimiter |
| Linux | ${XDG_STATE_HOME:-~/.local/state}/openlimiter |
Das Verzeichnis wird mit eingeschränkten Berechtigungen angelegt, wo die Plattform das unterstützt. Ein Pfad, der sich als symbolischer Link herausstellt, wird abgelehnt statt verfolgt.
Was darin liegt
| Datei | Rolle |
|---|---|
openlimiter-config.json | Geschrieben von openlimiter init. Hält die Connector Liste fest, ob jeder erkannt wurde, und das Statusline Layout. |
openlimiter-cache.json | Der eine Cache, den jeder Befehl liest und in den jeder Writer einfließen lässt. |
openlimiter.lock | Nur von Writern gehalten. Reader nehmen ihn nie. |
manual.json | Optional. Quota, das du von Hand pflegst. Sieh Ingestion für die Form. |
Wie sich der Cache verhält
- Ein Schema, eine Datei, ein Lock. Es gibt keine konkurrierenden Statusdateien, die abzugleichen wären.
- Reader nehmen den Lock nie. Ein Reader öffnet die Datei, validiert diesen offenen Descriptor, und liest durch ihn hindurch, ein nach der Prüfung getauschter Pfad kann die Bytes also nicht umleiten.
- Writer nehmen den Lock, und das Lesen, das Zusammenführen und das Schreiben passieren alle innerhalb davon. Ein Lock, der älter als fünf Sekunden ist, gilt als aufgegeben und wird zurückerobert.
- Jeder Austausch wird vor dem Umbenennen auf stabilen Speicher geschrieben, ein Reader sieht also entweder den vorherigen oder den neuen Inhalt, nie eine unvollständige Datei.
Die Cache Gesundheit ist jederzeit über openlimiter doctor sichtbar, das den Cache Status ausgibt und wie viele Zeilen wegen fehlgeschlagener Validierung verworfen wurden.
Das Statusline Layout
Die Statusline zeichnet eine kompakte Zelle je Provider: einen Namen, einen fünf Blöcke Balken, und den Prozentwert, mit dem übergreifenden Reason Code und der Routingempfehlung an der Spitze der Zeile. Sechs Schlüssel in der Konfigurationsdatei entscheiden, wie diese Zeile gebaut wird, und openlimiter config ist der Weg, sie zu lesen und zu ändern.
NO_COLOR=1 node packages/cli/dist/bin.js statusline
OpenLimiter NEAR_CAP PREFER ANTIGRAVITY CLAUDE ###.. 64.0% CODEX ####. 84.0% ANTIGRAVITY #.... 28.0% OPENCODE ####. 92.0%
MANUAL #.... 35.0% OPENROUTER ###.. 62.3%Jeder Schlüssel
| Schlüssel | akzeptiert | Bedeutung |
|---|---|---|
order | Provider ids, kommagetrennt, oder NONE | Die Reihenfolge, in der die Zellen erscheinen. Was du auflistest, kommt zuerst; jeder Provider, den du weglässt, folgt danach in der eingebauten Reihenfolge, das sind die Abo Pläne und dann die Credit und API Meter. NONE ist der Weg zurück zu dieser eingebauten Reihenfolge. Standard NONE. |
meters | worst oder all | Ein Provider mit mehreren Metern zeigt den, der seiner Grenze am nächsten ist, oder alle als eigene Zellen namens PROVIDER:METER. Meter ordnen sich session, daily, weekly, monthly, credits. Standard worst. |
width | eine ganze Zahl von 40 bis 400 | Die Spalten, die eine Zeile ausgeben darf, bevor die Zeile stapelt. Nichts misst dein Terminal: Ein Statusline Host führt den Befehl ohne angehängtes Terminal aus, die Zahl hier ist also die Zahl, die gilt. Standard 140. |
rows | 1 oder 2 | Wie viele Zeilen das Layout nutzen darf. Standard 2. |
bars | true oder false | False stellt die einzelne schlichte Zeile von 0.1.0 wieder her, Byte für Byte. Standard true. |
color | auto, always, oder never | auto folgt dem Terminal, was für einen Statusline Host meist keine Farbe bedeutet, weil der Host die Ausgabe abfängt, statt dem Befehl ein Terminal zu geben. always ist die Art zu sagen, dass der Host Escape Codes versteht. Standard auto. |
Sie lesen und schreiben
openlimiter config get statusline
statusline.order=NONE
statusline.meters=worst
statusline.width=140
statusline.rows=2
statusline.bars=true
statusline.color=autoEin Schlüssel nach dem anderen, validiert, bevor er geschrieben wird. Ein Wert, den der Schlüssel nicht nutzen kann, beendet sich mit 2 und benennt, was erwartet wurde, und nichts Unvollständiges wird geschrieben, weil das ganze Dokument atomar ersetzt wird. Statusline Schlüssel sind das Einzige, was dieser Befehl verändert: Die Connector Liste gehört openlimiter init, und jeder andere Schlüssel beendet sich mit 2.
openlimiter config set statusline.order codex,claude
statusline.order=codex,claude
openlimiter config set statusline.meters all
statusline.meters=all
openlimiter config set statusline.width 12
openlimiter config: statusline.width must be a whole number from 40 to 400.
openlimiter config set statusline.theme dark
openlimiter config: unknown statusline key. Known keys: order, meters, width, rows, bars, color.openlimiter init erneut auszuführen behält, was hier konfiguriert ist, und erkennt nur die Connectors neu. Ein Statusline Schlüssel, den diese Version nicht lesen kann, fällt auf seinen Standard zurück, statt das Zeichnen zu stoppen, ein handgemachter Tippfehler in einem Feld kostet dich also nie die anderen fünf.
Wenn der Zeile der Platz ausgeht
Die Zeile stapelt, statt zu kappen. Ein Umbruch landet zwischen zwei Zellen und nie innerhalb einer, und zwei Zeilen sind die Obergrenze. Danach werden die Provider behalten, die ihrer Grenze am nächsten sind, und die letzte Zeile endet damit, zu sagen, wie viele sie nicht zeigen konnte.
openlimiter config set statusline.rows 1 && NO_COLOR=1 node packages/cli/dist/bin.js statusline
OpenLimiter NEAR_CAP PREFER ANTIGRAVITY CODEX ####. 84.0% OPENCODE ####. 92.0% +4 moreDie 0.1.0 Zeile, auf Wunsch
Das Format vor diesem Layout war eine schlichte Zeile ohne Balken. Hast du ein Skript dagegen geschrieben, gibt dir bars false es exakt zurück, und ein Test pinnt diese exakte Zeichenkette, damit sie nicht driften kann.
openlimiter config set statusline.bars false && node packages/cli/dist/bin.js statusline
OpenLimiter NEAR_CAP CLAUDE 64.0% OPENROUTER 62.3% CODEX 84.0% ANTIGRAVITY 28.0% OPENCODE 92.0% MANUAL 35.0% PREFER ANTIGRAVITYClaude Code Einstellungen
Nutz den absoluten Pfad zu deinem Klon. Vorwärtsschrägstriche funktionieren auf jeder Plattform, auch unter Windows.
{
"statusLine": {
"type": "command",
"command": "node /absolute/path/to/openlimiter/packages/cli/dist/bin.js statusline"
},
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node /absolute/path/to/openlimiter/packages/cli/dist/bin.js hook"
}
]
}
]
}
}Welcher der beiden schreibt
Nur die Statusline. Sie ist der Weg, der die Session Payload empfängt, also der Weg, der den Cache aktualisiert. Der Hook liest und schreibt nie.
Zugangsdaten
Der Aufruf der Credential Library liegt hinter einer Schnittstelle, und der Adapter ist in diesem Release gestubbt, openlimiter init kann also keinen Key speichern, bis ein Driver geliefert wird. Nichts sonst auf deinem Rechner wird angefasst.
Connector Erkennung
Erkennung ist eine reine Funktion der Umgebung, die die CLI einem Connector übergibt. Fakten, die nur die CLI beobachten kann, etwa ein manuelles Dokument im Statusverzeichnis, kommen als explizite Marker an, weshalb openlimiter doctor nie behauptet, ein Connector sei bereit, wenn er keine Daten empfangen konnte.
openlimiter doctor
CONNECTOR DETECTED FRESHNESS DRIFT
claude no unknown UNVERIFIED
openrouter no unknown UNVERIFIED
codex no unknown UNVERIFIED
antigravity no unknown UNVERIFIED
opencode no unknown UNVERIFIED
manual yes fresh UNVERIFIED
CACHE ok DROPPED 0Ein Cache, der sich nicht parsen ließ, oder einer, der geparst wurde, aber Zeilen verlor, ergänzt eine weitere Zeile in Rot, die das sagt. Er meldet gegen den Cache, nicht gegen einen Provider, weil einer beschädigten Datei nicht zu trauen ist, wessen Wert sie hielt.