MAKE MONEY SHIPPING OPEN SOURCE.
중요한 공개 작업을 선택해 최고의 코딩 에이전트를 실행하고 결과를 제출해 공개 기여 기록을 구축
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AI agentic đổi được bộ não + Second Brain - chạy trên model nào bạn muốn (Claude Code, ChatGPT/Codex, Antigravity CLI, OpenRouter, OpenAI, Gemini, Anthropic API, Groq, Ollama), có giọng nói, đồ thị tri thức, và tự thông minh dần lên. Cài nhanh bằng chính AI của bạn Đưa link repo này cho Claude Code hoặc Codex đang chạy trên máy bạn và nói "cài Javis OS giúp tôi". Nó chỉ cần chạy một lệnh duy nhất:README 전문 보기 ↗
Run it on your laptop or a small VPS. Talk to it by voice. Plug in Claude, ChatGPT, Grok, Gemini or any of 14 providers, keep every tool when you switch, and let it work in the background while you sleep.
🇬🇧 English · 🇻🇳 Tiếng Việt · 🇨🇳 简体中文 · 🇪🇸 Español · 🇯🇵 日本語 · 🇮🇳 हिन्दी · 🇧🇷 Português · 🇰🇷 한국어 · 🇷🇺 Русский · 🇩🇪 Deutsch · 🇫🇷 Français · 🇮🇩 Bahasa Indonesia · 🌍 Help translate
Quick start · Why Javis · Brains · Features · Install · Docs · Support
The easy way: let your own AI install it. Give this repo link to Claude Code or Codex on your machine and say "install Javis OS for me". It only needs to run one command:
| Machine | One command installs everything |
|---|---|
| Linux / macOS | git clone https://github.com/blogminhquy/javis-os.git javis && cd javis && chmod +x install.sh && ./install.sh |
| Windows | git clone https://github.com/blogminhquy/javis-os.git javis; cd javis; powershell -ExecutionPolicy Bypass -File install.ps1 |
| Docker | curl -fsSLO https://raw.githubusercontent.com/blogminhquy/javis-os/main/docker-compose.yml && docker compose up -d |
Then open http://localhost:7777. The installer sets up Python, the four subscription CLI brains (claude, codex, agy, grok) and a .env, then starts the server. You sign in to each brain on the Models page of the dashboard, no more typing commands.
[!NOTE] Installed an extra CLI after Javis was already running? Restart Javis. A running process keeps the PATH it started with, so it cannot see a CLI installed later.
Javis OS is not a chatbot. It is a self-hosted agentic AI that runs on your own machine or VPS: it reads and writes files, calls tools over MCP, runs skills, queues background work and schedules itself. All of that sits behind a voice-controlled dashboard with a Second Brain (memory + wiki) that accumulates knowledge over time.
Pick one AI app and use it every day for a year. Then look at what has piled up inside it:
All of it sits on the vendor's servers, in the vendor's format. Then a better model ships somewhere else. You can try it, but you cannot bring your work along: the new app knows nothing about you, your instructions do not carry over, and your history stays behind. Exports, where they exist, are usually a dump of chat logs, not memory another tool can use.
So you stay. Not because the old model is still the best, but because leaving means starting from zero. And when the vendor raises prices, tightens limits, retires a model or locks your account, there is no plan B.
In Javis the model is a part you can swap. Everything you build up lives with you, as files you can open:
| What you build up | Where it lives | Format |
|---|---|---|
| Conversations | conversations.db on your own machine or VPS, one store whichever brain answered | SQLite, full-text searchable |
| Memory about you | memory/ in your brain: MEMORY.md plus one file per fact | Markdown |
| Knowledge | the Wiki and Sources folders of your brain | Markdown, Obsidian-compatible |
| Skills | skills/<name>/SKILL.md | Markdown |
| Agents and workflows | agents/*.md, workflows/*.md | Markdown with front matter |
| Loops and reminders | Javis/loops/*.md, Javis/reminders.json | Markdown, JSON |
What that buys you:
| An ordinary chatbot | Javis OS | |
|---|---|---|
| Brain | Locked to one model, one stateless API call per message | Swappable: 14 providers, each with the full set of tools, MCP, skills and sessions, including models running on your own machine through Ollama |
| Memory | Forgets after every session | A living Second Brain that remembers you and thickens with every conversation |
| Data | Made up, or absent | Real numbers from the connections you wire in (sales, ads, calendar, email, messaging) |
| Work | Answers, then waits | Background loops, reminders and an AI-run task queue that report back to you |
| Interface | A chat box | Dashboard + knowledge graph + hands-free voice + Telegram, Slack, WhatsApp, Zalo + a CLI |
| Your work | Stays on the vendor's servers, in the vendor's format | Plain files on your machine: history, memory, skills, agents and workflows carry over to any new model |
| Deployment | Someone else's cloud | Self-hosted: one-click Hostinger, Docker, or any VPS |
💡 The philosophy: capability lives in Javis, not in the model. Every brain gets the same toolbox through one shared connection hub (the MCP Hub). Switching from Claude to Gemini costs you nothing except shell access, which only the CLI engines have.
Pick the brain on the Models page and change it whenever you like. Javis supports 14 providers today.
| Brain | How you pay | Shell, web, sub-agents |
|---|---|---|
| Claude Code | Your Claude plan, or an Anthropic API key | ✅ |
| ChatGPT (via Codex) | Your ChatGPT plan | ✅ |
| Grok Build | Your SuperGrok or X Premium+ plan | ✅ |
| Antigravity CLI | Your Google plan (same lineup as the Antigravity IDE, Claude included) | Shell ✅ |
| OpenRouter | API key (hundreds of models behind one key) | via Javis tools |
| OpenAI API · Anthropic API · Google Gemini · Groq · DeepSeek | API key | via Javis tools |
| Ollama Cloud · Ollama on this machine | API key, or free on your own hardware | via Javis tools |
| Any OpenAI-compatible or Anthropic-compatible endpoint | Whatever that endpoint or reseller needs | via Javis tools |
Every brain can call your connected MCP servers, read and write the brain, run skills, queue Kanban work, and create agents, workflows, loops and reminders. The CLI engines additionally run shell commands, fetch and search the web, and spawn parallel sub-agents.
[!WARNING] A note before letting a subscription run background work. Anthropic scopes Claude Pro/Max to ordinary personal use of Claude Code. Continuous background execution (loops, reminders, Kanban jobs, chatbots), running on a VPS, or several people sharing one account fall outside that scope, so there is a risk of the account being locked, although Javis has no reported case so far. If it happens to you, please tell the developer through Issues. Javis never reads your login token: it runs the real
claudebinary, but that does not make round-the-clock background use legitimate. To be safe, set Claude Code to run on an API key on the Models page, or point the background-work model at another provider. The same caution applies to the xAI plan. Seeserver/claude_auth.py.
[[wikilink]], on a light canvas that works offline.flowchart LR
subgraph You
W[Web dashboard<br>voice + graph]
T[Telegram]
C[Javis CLI]
Z[Zalo / bot channels]
end
subgraph Javis["Javis OS (FastAPI, self-hosted)"]
R[Engine router]
H[MCP Hub<br>shared toolbox]
B[(Second Brain<br>Memory + Wiki + Sources)]
Q[Background work<br>Tasks, loops, reminders]
end
subgraph Brains
S[Subscription CLIs<br>Claude Code, Codex, Grok, Antigravity]
A[API engines<br>OpenRouter, OpenAI, Anthropic, Gemini, Groq, DeepSeek, Ollama]
end
W & T & C & Z --> R
R --> S & A
S & A --> H
H --> B
H --> M[Your MCP servers<br>sales, ads, calendar, email...]
Q --> R
server/: engines (claude_sdk_engine.py, claude_cli.py, antigravity_cli.py, engine.py, aux_engine.py), tools (mcp_hub.py, mcp_store.py, plugins_host.py), background work (tasks.py, self_improve.py, reminders.py, learn.py), language and locale (lang.py, lang_registry.py, localefmt.py).dashboard/. No framework and no build step, so it stays light on a small VPS. Interface strings live in dashboard/i18n/.brains/<brain name>/.[!IMPORTANT] Javis runs an AI brain with full rights on the machine. When it runs publicly (Docker, VPS, Hostinger), Javis forces login by itself: opening the app shows a create-account or sign-in screen, and nobody can drive it without a password.
🛒 No VPS yet? Get a Hostinger VPS here. Docker Manager comes built in, so Javis installs in one click. Once it is ready, come back to the steps below.
Hostinger VPS → Docker Manager → Compose → URL → paste the Hostinger file and press Deploy:
https://raw.githubusercontent.com/blogminhquy/javis-os/main/docker-compose.hostinger.yml
The Environment box needs only three fields: DOMAIN_NAME, JAVIS_ADMIN_USER, JAVIS_ADMIN_PASSWORD, plus an optional JAVIS_AUTO_UPDATE (set it to true and Javis updates itself daily).
Set DOMAIN_NAME so Hostinger's Traefik issues HTTPS:
DOMAIN_NAME=javis.<vps-hostname>.hstgr.cloud (hostname under hPanel → VPS, e.g. javis.srv1562015.hstgr.cloud).DOMAIN_NAME=example.com and point an A record at the VPS IP.Wait 1-3 minutes for the certificate, then open https://<DOMAIN_NAME>. No Traefik on the VPS (a plain Ubuntu 26 image)? Use the same link: the bundled javis-gateway (Caddy) issues the certificate itself when ports 80/443 are free.
Three one-time steps:
javis-os → Package settings → Visibility = Public.JAVIS_ADMIN_USER + JAVIS_ADMIN_PASSWORD (recommended), or open the app right after deploying and set one yourself. While no admin exists, whoever opens the link first can create it. Then turn on 2FA (Security and accounts).Details and troubleshooting: DEPLOY.en.md.
🛒 Need a VPS? A Hostinger VPS runs this option too.
# Docker required (don't have it? curl -fsSL https://get.docker.com | sh)
mkdir javis && cd javis
curl -fsSLO https://raw.githubusercontent.com/blogminhquy/javis-os/main/docker-compose.yml
docker compose run --rm javis claude auth login --claudeai # sign in to Claude once (optional)
docker compose up -d # pull the image and run
Open http://<vps-ip>:7777 and set the admin username and password right away (at least 8 characters), or preset JAVIS_ADMIN_USER + JAVIS_ADMIN_PASSWORD in the environment. Then turn on 2FA.
Remote access without a domain: docker compose --profile tunnel up -d, then docker compose logs tunnel | grep trycloudflare prints an HTTPS link.
git clone https://github.com/blogminhquy/javis-os.git javis && cd javis
chmod +x install.sh && ./install.sh
The script installs Python, Node and the CLI brains, creates a venv, registers a service that starts at boot, and prints the address.
🍎 macOS, open it like an app: double-click JAVIS OS.app (or Start JAVIS OS.command). Since 0.306.0 ./install.sh makes Javis start at login and open the dashboard (turn off: ./bin/javis-autostart.sh uninstall). Details: bin/README.md.
git clone https://github.com/blogminhquy/javis-os.git javis; cd javis
powershell -ExecutionPolicy Bypass -File install.ps1
install.ps1 does it all in one pass: Python, venv and libraries, the four subscription CLI brains (claude, codex, agy, grok), the .env, freeing port 7777 and starting the server. It ends with a table of which brains are ready. Without winget, install Python 3.12 (tick "Add python.exe to PATH") and Node.js LTS by hand first, then run it again.
Run with a visible window (live log): setup.bat
Run silently from then on: start-javis.vbs (log at server\javis.log)
Stop: stop-javis.bat
Dashboard: http://localhost:7777
🪟 Open it like an app: after the first run, double-click JAVIS OS.bat. The server starts in the background and the dashboard opens in its own window with its own taskbar entry. Since 0.306.0 the installer makes Javis start at login and open the dashboard (turn off: javis-autostart.bat uninstall or the button in Settings).
Brains, settings and accounts stay fully separate per instance. Only three values differ between them: JAVIS_NAME, JAVIS_HOST_PORT, DOMAIN_NAME.
docker-compose.hostinger.yml again as a second stack and fill in those three fields.docker-compose.proxy.yml once for the whole machine, then give each instance its own folder with docker-compose.multi.yml. The proxy discovers new instances and requests SSL by itself.JAVIS_NAME=javis-shop JAVIS_PORT=7778 ./install.sh.Step by step: DEPLOY.en.md.
Open Javis and the setup wizard walks you through it, in your browser's language:
The left rail groups the pages into 5 groups. Every page has a guide in docs/en/.
| Group | Pages | Guides |
|---|---|---|
| Brain | Graph, Chat, Files, Self-learning | Chat and voice · Knowledge graph · Sessions · File manager · Self-learning |
| Capabilities | Partners (agents and workflows), Chatbot, Skills, Plugins, Terminal | Agents and workflows · Chatbots · Customer conversations · Skills · Plugins · Terminal |
| Work | Tasks, Scheduled | Tasks (Kanban) · Recurring jobs and reminders |
More: Second Brain: memory, Wiki and INGEST · GitHub backup · Tasks and Dataview in notes · Branding and custom domains · Troubleshooting
.env)Every line can stay empty and Javis still runs. Copy env.example → .env and add what you need. The full list with an explanation per variable is in docs/en/16-env-configuration.md.
| Variable | Meaning | Default |
|---|---|---|
JAVIS_HOST | Listen address. 127.0.0.1 = this machine only, 0.0.0.0 = public | 127.0.0.1 |
JAVIS_PORT | Port | 7777 |
JAVIS_REQUIRE_LOGIN | 1/0 to force login on or off (default: on when bound publicly) | (auto) |
JAVIS_ADMIN_USER / JAVIS_ADMIN_PASSWORD | Create the admin at deploy time | - |
JAVIS_ALLOWED_HOSTS | Extra hostnames on the allow-list (CSRF and DNS-rebinding protection) | localhost + your domain |
JAVIS_STATE_DIR | Where settings, sessions and the encryption key live | server/ (Docker: /data/state) |
BRAINS_DIR | Parent folder holding every brain | brains/ (Docker: /brains) |
JAVIS_ENABLE_USER_PLUGINS | false turns your own plugins off (they run real Python inside the server) | (on) |
TTS_VOICE / TTS_RATE | Voice and speed for Edge TTS | en-US-EmmaMultilingualNeural / +5% |
Secure cookies under HTTPS, sessions that expire after 30 days.settings.json (API keys, OAuth tokens, bot tokens) with a per-machine key.JAVIS_ENABLE_USER_PLUGINS=false to turn them all off.Found a vulnerability? Please follow SECURITY.md instead of opening a public issue.
In the app: Settings → Updates → Update now, with a progress bar and a rollback button if the new build breaks. On a VPS: cd javis && ./update.sh (pulls the new image and restarts; your data in the volumes is kept).
| Symptom | What to do |
|---|---|
| The Models page says a CLI is not installed, but it is | Restart Javis: the running process keeps the PATH from when it started. |
| Port 7777 is taken and the new build will not start | Stop the old process first (stop-javis.bat, or kill the PID), then start again. |
| Hostinger cannot pull the image | Set the GHCR package to Public and wait for the GitHub Action build to finish. |
| A brain says it is not signed in | Models → that provider's card → sign in. |
More in docs/en/17-troubleshooting.md.
javis-os/
├── server/ # FastAPI backend: engines, connections, background work, channels, memory
├── dashboard/ # Frontend (plain JS, no build step)
│ └── i18n/ # Interface strings, one JSON file per language
├── brains/ # Every Second Brain (default: brains/Brain Default)
├── system/ # Ships with the app: bundled plugins, system skills, connection catalogue
├── docs/ # User guides (docs/en/ in English) and translations (docs/i18n/)
├── tests/ # Python + JS test suite (python tests/run.py)
├── install.sh · install.ps1 · update.sh
├── Dockerfile · docker-compose*.yml
└── CLAUDE.md # The system prompt Javis runs on
| What | Languages today |
|---|---|
| Javis's replies | Any language: it answers in the language you write in, or one you pin in Settings |
| Dashboard and server messages | 🇬🇧 English · 🇻🇳 Tiếng Việt, per device: each browser gets its own language until you pick one |
| Connection store, plugins, a new brain's starter files | 🇬🇧 English · 🇻🇳 Tiếng Việt |
| README and quick start | 🇬🇧 English · 🇻🇳 Tiếng Việt · 🇨🇳 简体中文 · 🇪🇸 Español · 🇯🇵 日本語 · 🇮🇳 हिन्दी · 🇧🇷 Português · 🇰🇷 한국어 · 🇷🇺 Русский · 🇩🇪 Deutsch · 🇫🇷 Français · 🇮🇩 Bahasa Indonesia |
| Full documentation | 🇬🇧 English · 🇻🇳 Tiếng Việt |
Adding a language is a data change, not a code change: one entry in server/lang_registry.py plus one dashboard/i18n/<code>.json, and optionally system/mcp-catalog.<code>.json. Anything not translated yet shows in English. See CONTRIBUTING.md if you would like to help.
Bug reports, ideas, translations and pull requests are all welcome, in English or Vietnamese.
| Start here | What it gives you |
|---|---|
| CONTRIBUTING.md | Setting up, running the tests (python tests/run.py), the code conventions |
| ARCHITECTURE.md | How the pieces fit together, and a map of the server modules |
| docs/dev/GLOSSARY.md | The code base was written in Vietnamese: this decodes names like nhac_hen (reminder) |
| docs/dev/adding-a-language.md | Translating Javis into your language, step by step |
| Issue templates | Bug report, feature request, translation offer |
Please follow the Code of Conduct, and report security problems privately as described in SECURITY.md.
If Javis is useful to you, a ⭐ on the repo helps other people find it.
Open source under the MIT License: use, modify and distribute freely, just keep the copyright notice. See LICENSE.
Javis OS is free and open source, and it is still one person writing the code and paying for the test servers. If Javis helps your work or your life, a small donation buys more time for bug fixes and new features.
66369663690372752740Can't donate? Using Javis, sending feedback or opening a pull request counts as support too.
| Connections | Connections, Javis Store, Channels, Models | Connections and business data · Telegram · Zalo · Models and engines |
| System | Settings, Share links, Account | Getting started · Security and accounts · Usage and cost · Javis CLI |