The mission

AI-powered coding should be accessible to everyone — not locked behind paid APIs and subscriptions.

PKA CODE was created with a simple belief: great AI tools shouldn't require a credit card. While the world was racing toward paid AI subscriptions, we saw an opportunity — the best AI models from Google, Meta, Mistral, and others were available for free. Someone just needed to make them easy to use — in your terminal and your browser.

So we built PKA CODE — a bridge between developers and the best free AI models. Use it in your CLI for full project control, or open the Web Chat for quick browser-based conversations. No sign-up walls, no usage caps that require payment, no data collection. Just your code and a helpful AI assistant that respects your privacy.

Core principles

  • Free forever — Only uses free API tiers. No premium upsells.
  • Privacy first — Your code stays on your machine. No telemetry.
  • Open source — MIT licensed. Audit, fork, and contribute.
  • Two interfaces — CLI for power users, Web Chat for quick access.
  • Cross-platform — Windows, Linux, macOS. One tool for all.

Web Chat — Instant

PKA CODE has grown beyond the terminal. Run pkacodeweb to chat instantly in your browser — no API key needed for instant access.

Same Config, Same Keys

API keys set via the CLI are automatically available in the Web Chat. No double setup.

Streaming by Default

Every response streams word-by-word via SSE. Watch the AI think in real-time.

Instant Mode

Chat instantly with DeepSeek V4 Flash — no API key needed. Add your own key for unlimited access.

Built with Express + SSE

The Web Chat server is a lightweight Express.js app using Server-Sent Events for real-time streaming.

Mobile Responsive

Full touch support with swipe gestures, bottom nav, and slide-out sidebar. Works on any device.

Open Source

Both the CLI and Web Chat are MIT licensed. The server code is in the server/ folder.

Architecture

Simple, modular, and extensible. Built with TypeScript and modern Node.js.

Project structure tree
src/
├── index.ts              # Entry point
├── cli/
│   ├── program.ts        # Commander CLI setup
│   └── help.ts           # Help text
├── chat/
│   ├── interactive.ts    # Interactive chat loop
│   ├── conversation.ts   # Conversation manager
│   └── options.ts        # Session options
├── commands/
│   ├── config.ts         # Config commands
│   ├── dispatch.ts       # /pka dispatcher
│   ├── models.ts         # Model management
│   ├── permissions.ts    # Permission controls
│   ├── sessions.ts       # Session management
│   └── theme.ts          # Theme handler
├── permissions/
│   ├── engine.ts         # Permission checking
│   ├── modes.ts          # Permission modes
│   └── rules.ts          # Allow/ask/deny
├── sessions/
│   └── store.ts          # JSON file storage
├── ui/
│   ├── prompt.ts         # Startup panel, input
│   ├── select.ts         # Interactive picker
│   ├── markdown.ts       # Markdown rendering
│   ├── spinner.ts        # Loading spinners
│   ├── status-bar.ts     # AI status display
│   ├── diff.ts           # File diff display
│   ├── usage-limit.ts    # Usage warnings
│   └── theme.ts          # ANSI theme helpers
├── ai/
│   ├── provider.ts       # Provider interface
│   ├── gemini.ts         # Gemini provider
│   ├── groq.ts           # Groq provider
│   └── openrouter.ts     # OpenRouter provider
├── tools/
│   ├── registry.ts       # Tool registry
│   ├── read-file.ts
│   ├── write-file.ts
│   ├── edit-file.ts
│   ├── delete-file.ts
│   ├── exec-command.ts
│   ├── glob-search.ts
│   ├── list-files.ts
│   └── ask-user.ts
├── auth/
│   ├── credentials.ts    # Key storage
│   ├── wizard.ts         # Login wizard
│   └── oauth/            # OAuth helpers
└── config/
    ├── store.ts          # Config management
    └── types.ts          # Config types
┌──────────────────────────────────────────────────────┐ │ CLI Entry (index.ts) │ ├──────────────────────────────────────────────────────┤ │ Commander (program.ts) │ ├──────────────────────────────────────────────────────┤ │ Interactive Chat (interactive.ts) │ │ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │Commands │ │Session │ │AI Provider │ │ │ │dispatch │ │manager │ │(Gemini/Groq/OR) │ │ │ └──────────┘ └──────────┘ └────────────────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │Tools │ │Permission│ │UI (prompt, select, │ │ │ │registry │ │engine │ │markdown, spinner) │ │ │ └──────────┘ └──────────┘ └────────────────────┘ │ └──────────────────────────────────────────────────────┘

Built with

Modern tools for a modern coding experience.

TypeScript Node.js 18+ Express.js SSE Commander.js Chalk Gemini API Groq API OpenRouter API

Author

Built by a solo developer who believes AI should be free for everyone.

CHAN PISETH

License

Free as in freedom. MIT licensed — use it, modify it, share it.

MIT License legal
MIT License

Copyright (c) 2026 CHAN PISETH

Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the
Software without restriction, including without
limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice
shall be included in all copies or substantial portions
of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Get involved

PKA CODE is open source and community-driven. Contributions welcome.