javis-os
BLOCKgrade F · trust 28/100None
agent operationsagent optimizationagent orchestrationagent orchestratoragent osai agentai agentsharnessOverview
From the repository's own README, as read at the audited commit.
<div align="center"># 🧠 Javis OS**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.*****Tiếng Việt** · [English](README.en.md)*</div>---## Javis là gì?Javis OS **không phải** một chatbot. Nó là một **AI agentic tự host** chạy trên máy/VPS của bạn: đọc/ghi file, gọi công cụ (MCP), chạy skill, giao việc chạy nền, tự đặt lịch - rồi gói tất cả vào một **dashboard đẹp, điều khiển bằng giọng nói**, kèm một **Second Brain** (bộ nhớ + wiki) tích luỹ tri thức theo thời gian.**Bộ não thì bạn chọn, và đổi lúc nào cũng được.** Mười đường dùng được ngay: **Claude Code**, **ChatGPT/Codex** và **Antigravity CLI** (dùng chính gói subscription bạn đang trả, không cần mua API riêng), **Gemini CLI · OpenRouter · OpenAI API · Google Gemini · Anthropic API · Groq · Ollama Cloud** (chỉ cần API key).> ⚠️ **Đọc trước khi cho gói subscription chạy việc nền.** Anthropic chỉ tính gói Claude Pro/Max cho việc dùng **cá nhân, thông thường** của Claude Code. Chạy nền liên tục (loop, nhắc hẹn, việc Kanban, chatbot), chạy trên VPS, hoặc nhiều người dùng chung một tài khoản đều nằm ngoài phạm vi đó, và đã có người **bị khoá tài khoản** vì lý do này. Javis không tự đọc token đăng nhập của bạn (đường đó đã gỡ ở 0.26.17) - nó chạy qua đúng binary `claude`, nhưng như vậy vẫn không làm việc chạy nền 24/7 trở thành hợp lệ. Muốn yên tâm: ở trang **Models**, đặt Claude Code chạy bằng **API key**, hoặc trỏ **model việc nền** sang một provider khác. Xem `server/claude_auth.py`.> Triết lý: **năng lực nằm ở Javis, không nằm ở model.** Mọi bộ não đều được cấp cùng bộ đồ nghề qua trung tâm kết nối (MCP Hub) chung - MCP đã đấu, tool đọc/ghi brain, skill, việc Kanban, agent/workflow/loop/nhắc hẹn. Khác biệt duy nhất: hai engine CLI chạy thêm được **lệnh máy**. Đổi từ Claude sang Gemini không làm Javis mất chức năng nào ngoài chuyện đó
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add javis-cli --env ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY} --env JAVIS_ADMIN_PASSWORD=${JAVIS_ADMIN_PASSWORD} --env JAVIS_AGY_MCP_KEY=${JAVIS_AGY_MCP_KEY} --env JAVIS_TOKEN=${JAVIS_TOKEN} -- uvx javis-cli{
"mcpServers": {
"javis-cli": {
"command": "uvx",
"args": [
"javis-cli"
],
"env": {
"ELEVENLABS_API_KEY": "${ELEVENLABS_API_KEY}",
"JAVIS_ADMIN_PASSWORD": "${JAVIS_ADMIN_PASSWORD}",
"JAVIS_AGY_MCP_KEY": "${JAVIS_AGY_MCP_KEY}",
"JAVIS_TOKEN": "${JAVIS_TOKEN}"
}
}
}
}Exposed tools (1) 1 read · 0 write · 0 destructive
| Tool | Risk | Description |
|---|---|---|
Notes | read | Luu note |
Details
- Source
- blogminhquy/javis-os
- PyPI
javis-cli- Transports
- stdio · streamable-http
- Credentials it reads
ELEVENLABS_API_KEYJAVIS_ADMIN_PASSWORDJAVIS_AGY_MCP_KEYJAVIS_TOKENWATCHTOWER_TOKENXAI_API_KEY- License
- MIT
- Stars
- 196 · pushed 0d ago
Trust audit
Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | WARN |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (12 observation(s))
- Network
- declared (14 observation(s))
- Shell
- declared (8 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
return yaml.load(stream, Loader=_PyLoader)
return yaml.load(stream, Loader=_CLoader)
return yaml.load(stream, Loader=_PyLoader)
if (c.mode() === "wys") exec(c, "createLink", u); else wrapTa(c, "[", "](" + u + ")", dich("ecmd.ph_text"));_TEN_CAM = (".env", ".git", "id_rsa", "id_dsa", "id_ecdsa", "id_ed25519")if thap in _TEN_CAM or thap.startswith("id_rsa"):mod = importlib.import_module(f"lexicon.{ma}")self.mod = importlib.import_module(_INTERNAL[name])
r"|exfiltrat|gửi\s+.{0,20}(ra\s+ngoài|tới\s+http)"CMD python -c "import urllib.request,os,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:'+os.getenv('JAVIS_PORT','7777')+'/health',timeout=4).status==200 else 1)" || exit 1set "URL=http://127.0.0.1:%JAVIS_PORT%"
echo "JAVIS OS is running at http://127.0.0.1:7777"
return s[0] + "" + s[1:] # chèn zero-width space → vỡ pattern lệnh
t = (text or "").replace("\r\n", "\n").replace("", "")- **Dọn 138 dòng cụm chết của panel loop cũ**: panel `<div class="loop-box" style="display:none">` trong `index.html` cùng cụm phục vụ nó trong `app.js` (`loadLoopConfig`, `saveLoopConfig`, `renderLoo
<div id="ovVerChangelog" style="display:none;margin:8px 0;padding:8px 10px;border-left:3px solid var(--accent,#6aa);background:rgba(120,140,160,.08);border-radius:6px;font-size:13px;line-height:1.6"><
<button class="gcard-btn" id="ovVerUpdate" style="display:none">⬆ Cập nhật ngay</button>
<div id="ovVerProgress" style="display:none;margin-top:10px"></div>
<div id="ovVerRollback" style="display:none;margin-top:10px;padding:10px;border:1px solid #c55;border-radius:8px;background:rgba(200,80,80,.08);font-size:13px;line-height:1.6"></div>
return yaml.load(stream, Loader=yaml.SafeLoader)
const fn = new Function(
eval(SRC);
eval(SRC);
const fn = new Function(
sig = hashlib.sha1("\n".join(n for n, _ in out).encode("utf-8")).hexdigest()[:16]Gates applied: no_behavioural_pass.
Audited 2026-09-15 · audit v0.4.0 · source sha ef70f247c32e · full audit: observations/trust-audit/mcp-server/blogminhquy__javis-os.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-15 | ef70f247c32e | BLOCK | F | 28 | first audit |
Alternatives
Other servers in the same categories, safer ones first.
Questions
What is the javis-os MCP server?
None
What tools does javis-os expose?
1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is javis-os safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (28/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does javis-os need?
It reads ELEVENLABS_API_KEY, JAVIS_ADMIN_PASSWORD, JAVIS_AGY_MCP_KEY, JAVIS_TOKEN, WATCHTOWER_TOKEN and XAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does javis-os run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as javis-cli.
How current is this page?
The grade is for one exact copy of the source (ef70f247c32e), read on 2026-09-15. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-15 · job trust-audit-2026-09-15