Skip to main content

Palapa

Autonomous AI agent lokal berbasis Ollama. Berjalan sepenuhnya offline, tanpa cloud API, dengan arsitektur yang bisa dimodifikasi bebas.


Fitur

  • ReAct agent loop — multi-turn, tool-calling, dengan context compaction otomatis
  • 6 tools bawaan — bash, file, web search, web fetch, browser (Playwright), memory
  • 3-layer memory — episodic (SQLite FTS5) + semantic (USER.md/MEMORY.md) + procedural (skills/)
  • Skills auto-extraction — Evaluator otomatis menulis skill baru setelah task kompleks, tanpa konfirmasi
  • Skills portabilitas — export skills ke git repo lokal, import dari remote, sync antar mesin
  • Agent delegation — main agent bisa mendelegasi sub-task ke child agent specialist, paralel
  • Network tools — Mikrotik RouterOS + Ruckus ICX + Cisco/Juniper/Aruba/Huawei via Netmiko, bundled whitelist per vendor/OS, read-only
  • MCP client — koneksi ke MCP server eksternal (stdio + HTTP)
  • CLI interaktif — history, multi-line input, slash commands, first-run wizard
  • REST API — FastAPI, streaming SSE, stateless per request
  • Provider configurable — Ollama default via OpenAI-compatible endpoint (/v1/chat/completions); swap ke LM Studio, vLLM, Groq, atau OpenAI cukup ubah model.base_url di config.yaml

Instalasi

Pengguna umum

pipx install palapa-agent
palapa chat   # wizard berjalan otomatis saat pertama kali

pipx menginstall CLI tool di virtualenv terisolasi — direkomendasikan agar tidak konflik dengan paket Python lain. Kalau belum punya pipx: pip install pipx atau brew install pipx. Alternatif tanpa pipx: pip install palapa-agent (install ke environment aktif).

Developer

git clone https://github.com/indi9o/palapa-agent
cd palapa-agent

uv sync

# Pertama kali pakai browser tool:
uv run playwright install chromium

Jalankan uv run palapa chat — wizard otomatis muncul kalau config belum ada.


Penggunaan

Catatan: Contoh perintah di bawah menggunakan palapa langsung — berlaku setelah pip install palapa-agent. Kalau kamu pakai mode developer (uv sync), tambahkan prefix uv run: uv run palapa, uv run palapa devices list, dst.

CLI

# Sesi interaktif
palapa

# Satu perintah, tanpa REPL
palapa --once "ringkasan interface eth0 di router X"

# Inventory perangkat jaringan
palapa devices add          # tambah perangkat secara interaktif
palapa devices list         # lihat daftar perangkat

# Kelola skills
palapa skills list
palapa skills show <nama>
palapa skills delete <nama>
palapa skills install-defaults          # install 17 bundled starter skills
palapa skills install-defaults --overwrite

# Export/import skills antar mesin
palapa skills export --repo <path>              # copy ke git repo lokal + auto-commit
palapa skills import git+<url>                  # clone dari remote, register sebagai sumber
palapa skills pull                              # update dari semua remote terdaftar
palapa skills pull <remote-name>
palapa skills remotes                           # lihat daftar remote terdaftar

# Cari sesi sebelumnya (episodic memory)
palapa sessions search <query>

Slash commands di dalam palapa chat:

Command Fungsi
/status Info sesi + model aktif + token usage
/clear Reset histori percakapan
/compact Paksa compaction konteks sekarang
/verbose Toggle tampilan tool call raw/ringkas
/audit Toggle audit log tool call
/skills Daftar skills yang ter-load sesi ini
/<skill-name> Inject skill langsung ke agent

REST API

uv run uvicorn palapa.gateway.api:app --reload
POST   /chat            — kirim pesan, respons streaming SSE
GET    /skills          — daftar semua skills
GET    /health          — health check
POST   /devices         — tambah network device (inventory.yaml), terima kredensial asli, auto-tulis ke ~/.palapa/.env
GET    /devices         — daftar device dari inventory.yaml
DELETE /devices/{name}  — hapus device by name (tolak 400 kalau nama duplikat; kredensial .env TIDAK ikut dihapus)

Endpoint /devices sengaja tanpa auth tambahan (konsisten seluruh REST API ini, asumsi personal-use/localhost) dan sumbernya cuma inventory.yaml — device yang didefinisikan langsung di config.yaml gak akan muncul.


Konfigurasi

Config dicari di dua lokasi (prioritas atas ke bawah):

  1. ./config.yaml — developer, per-project
  2. ~/.palapa/config.yaml — user install (dibuat oleh wizard)
model:
  base_url: "http://localhost:11434/v1"   # Ollama OpenAI-compat endpoint; override via env PALAPA_BASE_URL
  name: "qwen3.6:27b"
  context_length: 64000

tools:
  bash:
    enabled: true
  browser:
    enabled: true
  network:
    enabled: false              # aktifkan kalau pakai NetworkTool
    inventory_path: "~/.palapa/inventory.yaml"
    scripts_enabled: false      # opt-in eksplisit untuk run_skill_script
    # whitelist_extend:         # tambah command di luar bundled default
    #   mikrotik:
    #     ros7: ["/my-cmd"]

memory:
  skills_dir: "~/.palapa/skills/"
  db_path: "~/.palapa/sessions.db"
  user_model: "~/.palapa/USER.md"
  memory_md: "~/.palapa/MEMORY.md"
  soul_md: "~/.palapa/SOUL.md"   # persona agent, ditulis manual

audit:
  enabled: false   # catat semua tool call ke SQLite

api:
  host: "127.0.0.1"
  port: 8000

# Agent presets untuk delegation
delegation:
  max_parallel: 2
  agents:
    network-specialist:
      alias: "Budi"
      model: "qwen3.6:27b"
      exclusive: true          # tool preset hanya via delegasi, disembunyikan dari main agent
      timeout: 120
      tools: [network, bash, memory]

Lihat config.yaml.example untuk contoh lengkap.

Provider lain: Palapa terhubung ke Ollama via OpenAI-compatible endpoint (/v1/chat/completions). Endpoint yang sama dipakai oleh LM Studio, vLLM, Groq, Together, dan OpenAI sendiri — cukup ubah model.base_url (dan model.api_key bila perlu) untuk swap provider tanpa ubah kode.

Inventory perangkat tersimpan terpisah di ~/.palapa/inventory.yaml — kelola via palapa devices add/list atau edit manual.


Arsitektur

AgentLoop.run(pesan)
  → bangun system prompt (SOUL.md + USER.md + skills relevan + episodic hits)
  → LLM call
  → parse tool calls → ToolDispatcher.dispatch()
  → feed hasil → ulang sampai respons final / max iterasi
  → sesi tutup: persist ke episodic, jalankan Evaluator (background)
Komponen Tanggung jawab
agent/core.py ReAct loop — prompt, LLM call, dispatch tools
agent/evaluator.py Post-session skill extractor — skor kompleksitas, tulis SKILL.md
tools/ Satu file per tool (bash, file, web_search, web_fetch, browser, memory)
tools/network.py NetworkTool — Netmiko, bundled whitelist, whitelist_extend
tools/network_whitelist.py BUNDLED_WHITELIST per vendor/OS
mcp/ MCP client manager (stdio + HTTP)
memory/session.py Episodic memory — SQLite FTS5
memory/user_model.py Semantic memory — USER.md dan MEMORY.md
memory/skills.py Procedural memory — folder {slug}/SKILL.md, dual dir, auto-migration
providers/ollama.py OpenAI-compat adapter ke Ollama
setup/ Wizard, devices, skills installer, skills git export/import
gateway/runtime.py Wiring collaborator bersama (build_agent_loop)
gateway/cli.py Interactive REPL + --once scripted mode + semua subcommand
gateway/api.py FastAPI REST API — SSE streaming, stateless

Testing

uv run python -m pytest                          # semua test
uv run python -m pytest tests/unit/             # unit test (tidak butuh Ollama)
uv run python -m pytest tests/integration/      # integration test (butuh Ollama berjalan)

Dokumentasi

Riset, keputusan arsitektur, eksperimen, dan progress implementasi dikelola di palapa-wiki. ADR ada di docs/adr/. Domain glossary ada di CONTEXT.md.

Metadata

Release files for palapa-agent 0.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for palapa-agent 0.1.12
File Size Uploaded
palapa_agent-0.1.12.tar.gz 427.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for palapa-agent 0.1.12
File Interpreter ABI Platform
palapa_agent-0.1.12-py3-none-any.whl Python 3 none any Details

Total release size: 622.2 kB

Release files / palapa_agent-0.1.12.tar.gz

Download URL palapa_agent-0.1.12.tar.gz
Size 427.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5aade5611cdaeebaf6c6ac6d2e182d76e4a3ea9e58cb182f75665aecfa069feb
BLAKE2b-256 checksum
How to use checksums
fd68fd6c9aafc76cd6810daff55615c2b911378c41f66d78cf522aa1aff48cb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / palapa_agent-0.1.12-py3-none-any.whl

Download URL palapa_agent-0.1.12-py3-none-any.whl
Size 194.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e212e98cd7578bf4f7a5f9571b60088743e151c0e22376327c229b57a0ce91a1
BLAKE2b-256 checksum
How to use checksums
4cb04aefff02c9217f9e0a9d1760234eccaf291eea66f5a801c632bc1a289af7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.15

2 release files

0.1.14

2 release files

This release

0.1.12 This release

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page