Chat4J is a Java 21 desktop client for cloud, OAuth, and local AI providers. It supports streaming responses, local conversation storage, Agent Mode, speech input, and read aloud. The Swing UI uses FlatLaf with bundled IntelliJ themes. Transcripts render through native System WebViews via SwingWebView, Chromium via jcefmaven / JCEF, or Swing.
Download the .dmg, .msi, .deb, or shaded JAR from GitHub Releases. Run the JAR with java --enable-preview -jar chat4j-<version>.jar. Release artifacts are currently unsigned, so macOS or Windows may show a first-launch warning. See release artifact verification before bypassing it.
Run from source with Java 21 and Maven:
mvn clean compile
mvn exec:javaIf Gatekeeper blocks Chat4J, Control-click Chat4J.app in Finder, choose Open, then confirm Open. If it remains blocked, use System Settings → Privacy & Security → Open Anyway.
Terminal alternative:
xattr -dr com.apple.quarantine /Applications/Chat4J.app
open /Applications/Chat4J.appIf SmartScreen blocks Chat4J, click More info → Run anyway. If the installer is marked as blocked, right-click it, choose Properties, check Unblock on the General tab, then click Apply.
- API key: Anthropic, Gemini, OpenAI, Perplexity, OpenRouter, Together, Groq, DeepSeek, Mistral, xAI, ElevenLabs, ListenHub, Speechify, Deepgram, and AssemblyAI
- OAuth: OpenAI Codex and GitHub Copilot
- Local: Ollama, LM Studio, Whisper.cpp, and Vosk
Add API keys in Settings or through provider environment variables such as OPENAI_API_KEY. Settings tokens take precedence and are stored in Chat4J's encrypted local vault, not an OS keychain.
mvn test
mvn clean package