Skip to content

Releases: joshtech90/PocketClot

v0.2.0 — Multi-provider auth + token usage + full i18n

Choose a tag to compare

@joshtech90 joshtech90 released this 19 May 14:30

v0.2.0 brings multi-provider Claude authentication, token usage tracking, complete localization in 7 languages, and several security + bug fixes.

Highlights

Multi-provider Claude auth

Each user can pick which backend their messages go through:

  • Pro/Max (default): OAuth via the claude login session on the server. Runs against your Pro/Max subscription. Same behavior as v0.1.0.
  • Anthropic API: direct console API key (sk-ant-…). Pay-as-you-go billing against the Anthropic Console account.
  • AWS Bedrock: routes via Amazon Bedrock with your AWS credentials. Supports Claude Opus 4.7 on Bedrock-pinned model IDs.

Picker lives in Settings → Claude connection in both the app and the web UI.

Token usage tracking

Per-user aggregate of input/output/cache tokens lives in Settings → Token usage. Useful for the Anthropic-API and Bedrock paths where each request shows up on a real invoice.

Complete localization

All user-facing strings in the app and web UI translated into 7 languages: English, German, Spanish, French, Brazilian Portuguese, Simplified Chinese, Japanese. Switch language under Settings → Appearance → Language (app) or Settings → Language (web UI).

Security hardening

  • Bash skill is off by default. Set ALLOW_BASH=1 in .env to opt in. Closes a hole where any app-account user could execute commands as the pocket-claude system user.
  • BILLING_ACCOUNT_ID is no longer hardcoded — set via env var; the billing widget hides itself when unset.

Bug fixes

  • New-chat button: tapping "New chat" from the drawer used to scroll to the end of the current chat instead of opening a fresh conversation. Fixed.
  • Installer: install-linux.sh now skips Node + npm + claude-cli installation when a working claude binary is already on PATH. Also warns when the binary isn't visible to the service user.
  • Installer: repo URL updated to the new mono-repo (joshtech90/PocketClaude).
  • systemd unit: removed ProtectHome=true — it silently broke OAuth (CLI couldn't read its credential file). The other hardening flags stay on.

Multi-auth correctness fixes

  • Mode-switch session-stale: switching from Pro/Max → API → Bedrock used to leave cached CLI session IDs in place, so the first message after a switch failed (user had to resend). The server now drops session IDs across the user's conversations on a real mode change.
  • Bedrock pre-flight: switching to Bedrock without AWS credentials now fails eagerly with a clear 400 instead of producing an opaque CLI timeout on the next chat.
  • Bedrock model-alias validation: PUT used to accept any string for bedrock_model_alias and silently fall back to opus; now returns 400 with a clear message.

i18n consistency fixes

  • A broken settings_tts_section_cloud_body source string (German + truncated, that all 6 translations had dutifully copied) was rewritten and re-translated.
  • The Effort chips (Off / Low / Medium / High / Very high / Maximum) and the Info-popup OK button ("Got it") were the last hardcoded German strings — now properly localized.

Web-UI fixes

  • A dead openSettings reassignment meant the image-API-key block and admin user list never loaded when the settings modal opened. Fixed.
  • %% printf-escape now renders as % (was showing literally as "80%% context").
  • "Error: …" prefixes localized.
  • Settings-modal status text auto-clears on close.

SDK upgrade

  • claude-agent-sdk constraint raised to >=0.2.82,<1.0. The 0.1 line is incompatible with current Claude Code CLI builds.

Upgrade

For existing v0.1.0 installations:

# On the Linux host
sudo systemctl stop pocket-claude
cd /opt/pocket-claude && sudo -u pocket-claude git pull
sudo -u pocket-claude .venv/bin/pip install -r requirements.txt --upgrade

# IMPORTANT — re-install the systemd unit (the ProtectHome=true line was
# silently breaking OAuth):
sudo cp deploy/systemd/pocket-claude.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start pocket-claude

Then install the new APK from this release.

Full changelog

See CHANGELOG.md.

v0.1.0 — Initial public release

Choose a tag to compare

@joshtech90 joshtech90 released this 19 May 11:18

First public release of Pocket Claude — a self-hosted personal Claude chat front-end that runs on your own Pro/Max subscription via the Claude Code CLI.

What's in this release

Server — Python FastAPI + SQLite (FTS5) + built-in web UI. One-line install on any Linux box, tunnel via Tailscale Funnel (free, persistent *.ts.net URL) or Cloudflare Named Tunnel.

Android app — Kotlin + Jetpack Compose, Material 3, minSdk 31 (Android 12+). The attached PocketClaude-v0.1.0.apk is a debug build you can sideload directly.

Highlights

  • 💬 Multi-user authentication (scrypt + session tokens). One Pro/Max account, many users.
  • 📡 SSE streaming with retry interceptor and 60-second keep-alive — stable over Tailscale Funnel.
  • 📎 Liberal file attachments (images, PDFs, code, configs, JSON, CSV).
  • 🔍 Full-text search across all conversations (SQLite FTS5) with spring-to-match in the app.
  • 🔊 Three TTS providers: Microsoft Edge (free), Gemini Direct API (free tier), Google Cloud TTS (Chirp 3 HD).
  • 🎨 Image generation via Gemini Nano Banana.
  • 🎭 Four system-prompt modes — Standard, Permissive, Ultra-Liberal, Custom.
  • 🛠 Per-chat skill toggles — WebSearch, WebFetch, Bash.
  • 🔐 AES-256 encrypted backups.
  • 🌐 7 languages — English, German, Spanish, French, Brazilian Portuguese, Simplified Chinese, Japanese.

Quickstart

# 1. On your Linux host
curl -fsSL https://raw.githubusercontent.com/joshtech90/PocketClaude/main/server/deploy/install-linux.sh | sudo bash

# 2. Sign Claude into your Pro/Max subscription
sudo -u pocket-claude -H claude login

# 3. Set up a persistent public URL (free, no domain needed)
sudo bash /opt/pocket-claude/deploy/setup-tailscale-funnel.sh

Then install the APK on your Android device (or build from source), add the URL printed by the funnel script as a profile, log in with the initial admin password (saved at /opt/pocket-claude/data/INITIAL_PASSWORD.txt), and you're done.

Documentation

Disclaimer

Self-hosted hobby project. Not affiliated with Anthropic. Bring your own Pro/Max subscription.

Contributing

PRs welcome — especially for completing translations of long-form settings help texts, iOS client, and Docker packaging. One PR per language for translations.