docs: add systemd user service and persistent env setup
Add templates/claude-tokenization-proxy.service (systemd user unit that runs the proxy at login, restarts on failure) and README sections covering its installation, lingering for boot-before-login, and permanently setting ANTHROPIC_BASE_URL across fish, bash/zsh, and environment.d.
This commit is contained in:
@@ -84,6 +84,65 @@ Treat them as opaque identifiers and preserve them exactly as they appear when
|
|||||||
writing or reading files.
|
writing or reading files.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Run at boot/login (systemd user service)
|
||||||
|
|
||||||
|
[`templates/claude-tokenization-proxy.service`](templates/claude-tokenization-proxy.service)
|
||||||
|
is a ready-to-use systemd **user** unit that runs the proxy in the background and
|
||||||
|
restarts it on failure.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Install the unit
|
||||||
|
mkdir -p ~/.config/systemd/user
|
||||||
|
cp templates/claude-tokenization-proxy.service ~/.config/systemd/user/
|
||||||
|
|
||||||
|
# 2. Edit WorkingDirectory= to point at your clone (and the node path if you
|
||||||
|
# use a version manager like nvm/fnm/asdf — see the comments in the unit)
|
||||||
|
$EDITOR ~/.config/systemd/user/claude-tokenization-proxy.service
|
||||||
|
|
||||||
|
# 3. Enable + start it
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable --now claude-tokenization-proxy.service
|
||||||
|
|
||||||
|
# Check status / logs
|
||||||
|
systemctl --user status claude-tokenization-proxy.service
|
||||||
|
journalctl --user -u claude-tokenization-proxy.service -f
|
||||||
|
```
|
||||||
|
|
||||||
|
A user service starts when **you** log in. To keep it running at boot before
|
||||||
|
any login (and after you log out), enable lingering for your account:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo loginctl enable-linger "$USER"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Permanently point claude-code at the proxy
|
||||||
|
|
||||||
|
Setting `ANTHROPIC_BASE_URL` per shell (as in [Setup](#setup)) only lasts for
|
||||||
|
that session. To make it stick:
|
||||||
|
|
||||||
|
- **fish** — set a universal variable once; it persists across sessions:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
set -Ux ANTHROPIC_BASE_URL http://localhost:8080
|
||||||
|
```
|
||||||
|
|
||||||
|
- **bash/zsh** — add the export to your shell rc (or `~/.profile` for all
|
||||||
|
shells):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo 'export ANTHROPIC_BASE_URL=http://localhost:8080' >> ~/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
|
- **All processes in a graphical session** (works regardless of shell) — drop
|
||||||
|
it in systemd's user environment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.config/environment.d
|
||||||
|
echo 'ANTHROPIC_BASE_URL=http://localhost:8080' >> ~/.config/environment.d/claude.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Takes effect on next login.
|
||||||
|
|
||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
| Command | What it does |
|
| Command | What it does |
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Copyright (C) 2026 Rootiest
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=claude-code tokenization proxy (ggshield DLP)
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
# Edit this to the absolute path where you cloned the repo.
|
||||||
|
WorkingDirectory=%h/projects/claude-tokenization-proxy
|
||||||
|
# Requires Node >= 23.6 on PATH. If you use nvm/fnm/asdf, replace
|
||||||
|
# "/usr/bin/env node" with the absolute path to your node binary
|
||||||
|
# (run `which node` to find it).
|
||||||
|
ExecStart=/usr/bin/env node src/index.ts
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
# Optional overrides (see README "Configuration"):
|
||||||
|
# Environment=PORT=8080
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
Reference in New Issue
Block a user