feat: Add Gitea MCP integration and project cleanup
## New Features - **Gitea MCP Tools** (zero API cost): - gitea_read_file: Read files from homelab repo - gitea_list_files: Browse directories - gitea_search_code: Search by filename - gitea_get_tree: Get directory tree - **Gitea Client** (gitea_tools/client.py): REST API wrapper with OAuth - **Proxmox SSH Scripts** (scripts/): Homelab data collection utilities - **Obsidian MCP Support** (obsidian_mcp.py): Advanced vault operations - **Voice Integration Plan** (JARVIS_VOICE_INTEGRATION_PLAN.md) ## Improvements - **Increased timeout**: 5min → 10min for complex tasks (llm_interface.py) - **Removed Direct API fallback**: Gitea tools are MCP-only (zero cost) - **Updated .env.example**: Added Obsidian MCP configuration - **Enhanced .gitignore**: Protect personal memory files (SOUL.md, MEMORY.md) ## Cleanup - Deleted 24 obsolete files (temp/test/experimental scripts, outdated docs) - Untracked personal memory files (SOUL.md, MEMORY.md now in .gitignore) - Removed: AGENT_SDK_IMPLEMENTATION.md, HYBRID_SEARCH_SUMMARY.md, IMPLEMENTATION_SUMMARY.md, MIGRATION.md, test_agent_sdk.py, etc. ## Configuration - Added config/gitea_config.example.yaml (Gitea setup template) - Added config/obsidian_mcp.example.yaml (Obsidian MCP template) - Updated scheduled_tasks.yaml with new task examples Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
53
scripts/proxmox_ssh.py
Normal file
53
scripts/proxmox_ssh.py
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Proxmox SSH Helper - serviceslab (192.168.2.100)
|
||||
Uses paramiko for native Python SSH (no sshpass needed).
|
||||
Usage: python proxmox_ssh.py "command to run"
|
||||
"""
|
||||
|
||||
import sys
|
||||
import paramiko
|
||||
|
||||
PROXMOX_HOST = "192.168.2.100"
|
||||
PROXMOX_USER = "root"
|
||||
PROXMOX_PASS = "Nbkx4mdmay1)"
|
||||
PROXMOX_PORT = 22
|
||||
TIMEOUT = 15
|
||||
|
||||
|
||||
def run_command(command: str) -> tuple:
|
||||
"""Execute a command on the Proxmox server via SSH.
|
||||
Returns (stdout, stderr, exit_code).
|
||||
"""
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
try:
|
||||
client.connect(
|
||||
hostname=PROXMOX_HOST,
|
||||
port=PROXMOX_PORT,
|
||||
username=PROXMOX_USER,
|
||||
password=PROXMOX_PASS,
|
||||
timeout=TIMEOUT,
|
||||
look_for_keys=False,
|
||||
allow_agent=False,
|
||||
)
|
||||
stdin, stdout, stderr = client.exec_command(command, timeout=TIMEOUT)
|
||||
exit_code = stdout.channel.recv_exit_status()
|
||||
out = stdout.read().decode("utf-8", errors="replace")
|
||||
err = stderr.read().decode("utf-8", errors="replace")
|
||||
return out, err, exit_code
|
||||
finally:
|
||||
client.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python proxmox_ssh.py \"command\"")
|
||||
sys.exit(1)
|
||||
|
||||
cmd = sys.argv[1]
|
||||
out, err, code = run_command(cmd)
|
||||
if out:
|
||||
print(out, end="")
|
||||
if err:
|
||||
print(err, end="", file=sys.stderr)
|
||||
sys.exit(code)
|
||||
Reference in New Issue
Block a user