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.14

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.14
File Size Uploaded
palapa_agent-0.1.14.tar.gz 429.4 kB Details

Built distribution (wheel)

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

Total release size: 626.6 kB

Release files / palapa_agent-0.1.14.tar.gz

Download URL palapa_agent-0.1.14.tar.gz
Size 429.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2cb3791abe9f525ab25ae262cc4fe2164e6fb3b244e24315187d39f271452401
BLAKE2b-256 checksum
How to use checksums
e502d7b9745d626b495fa6090972722ce7197725afb35d3efd355b2eefca12f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","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.14-py3-none-any.whl

Download URL palapa_agent-0.1.14-py3-none-any.whl
Size 197.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95ee237c924bfae4fafdc76f885a33cf255c6312caf5dc4b9015b22a680a2a52
BLAKE2b-256 checksum
How to use checksums
5fabb7e8c82f6d4da7a8324c074c7c9622a3a2f5bbbccf58d7f1504f42dc8018
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","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

This release

0.1.14 This release

2 release files

0.1.12

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