SentinelX agent: outbound-only agent that exposes your Linux, macOS, and Windows servers as MCP tools to Claude.ai and ChatGPT
Drift inferred · capture-to-capture
tool count over time
tools
-
sentinel_capabilities
Host policy/capabilities; optional bounded summary projection
-
sentinel_chmod
Change file permissions
-
sentinel_chown
Change file owner/group
-
sentinel_copy
Copy a file or directory
-
sentinel_delete
Delete a file or directory
-
sentinel_edit
Structured file edit (replace, regex, replace-block, write, append, prepend)
-
sentinel_exec
Run an allowlisted shell command
-
sentinel_help
Rich orientation/help; optional topic/path/single-playbook projections
-
sentinel_list
Structured directory listing (name, type, size, mtime)
-
sentinel_move
Move/rename a file or directory
-
sentinel_ping
Cheap connectivity check
-
sentinel_read
Read a file's contents, with optional line-range slicing
-
sentinel_restart
Shortcut for sentinel_service with action=restart
-
sentinel_script_run
Run a one-off bash or python3 script
-
sentinel_search
Recursive content search with regex and glob filters
-
sentinel_service
systemctl start/stop/restart/reload/status
-
sentinel_state
Internal agent state, for debugging
-
sentinel_upload_file
Single-shot file upload to the host
analyzed commit 7d33d5e · analyzer v33 · 1d ago
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) pensados-sentinelx-cloud-core-7d33d5e/tests/test_handlers_upload.py :226
"file_url": "https://169.254.169.254/latest/meta-data/",
code files: 53
filesystem 36
- fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/__main__.py :9
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/client.py :15
import shutil - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/executor.py :16
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/executor_engine.py :17
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/__init__.py :14
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/basic.py :350
with open("/proc/uptime") as f: - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/edit.py :45
import shutil - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/file_export.py :34
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/fileops.py :90
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/fsmutate.py :69
import shutil - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/git_ops.py :30
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/project_snapshot.py :22
from pathlib import Path
show 24 more
- fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/script.py :50
import shutil - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/upload.py :28
import shutil - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/identity.py :7
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/local_audit.py :30
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/policy.py :14
from pathlib import Path - fs pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/staging.py :18
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_audit_outcome.py :18
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_fileops.py :15
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_fileops_event_loop.py :19
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_handlers_edit.py :11
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_handlers_fsmutate.py :21
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_handlers_script.py :5
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_handlers_upload.py :7
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_identity.py :6
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_jobs.py :7
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_local_api.py :12
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_local_audit.py :20
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_policy.py :6
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_read_bounds.py :18
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_script_windows_encoding.py :23
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_search_streaming.py :17
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_staging.py :14
from pathlib import Path - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_sudo_cwd.py :14
import shutil - fs (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_vendored_pensa_safe_edit.py :20
from pathlib import Path
shell / exec 6
- shell pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/client.py :17
import subprocess - shell pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/fsmutate.py :70
import subprocess - shell pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/script.py :52
import subprocess - shell (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_kill_process_tree.py :21
import subprocess - shell (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_sudo_cwd.py :15
import subprocess - shell (weak) pensados-sentinelx-cloud-core-7d33d5e/tests/test_vendored_pensa_safe_edit.py :18
import subprocess
network 5
- net pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/client.py :16
import socket - net pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/basic.py :7
import socket - net pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/handlers/upload.py :29
import socket - net pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/local_api.py :85
from urllib.parse import quote - net pensados-sentinelx-cloud-core-7d33d5e/src/sentinelx_core/local_api_relay.py :22
import socket
declared dependencies 8
- websockets@>=12.0
- pydantic@>=2.6,<3
- pyyaml@>=6.0
- structlog@>=24.1
- sentinelx-cloud-protocol@@ git+https://github.com/pensados/sentinelx-cloud-protocol.git@v1.11.0
- pytest@>=8.0
- pytest-asyncio@>=0.23
- ruff@>=0.4