gulama 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. gulama-0.2.0/.gitignore +71 -0
  2. gulama-0.2.0/CHANGELOG.md +39 -0
  3. gulama-0.2.0/LICENSE +21 -0
  4. gulama-0.2.0/PKG-INFO +418 -0
  5. gulama-0.2.0/README.md +308 -0
  6. gulama-0.2.0/media/Gulama.png +0 -0
  7. gulama-0.2.0/pyproject.toml +187 -0
  8. gulama-0.2.0/src/__init__.py +3 -0
  9. gulama-0.2.0/src/agent/__init__.py +16 -0
  10. gulama-0.2.0/src/agent/brain.py +615 -0
  11. gulama-0.2.0/src/agent/context_builder.py +304 -0
  12. gulama-0.2.0/src/agent/llm_router.py +519 -0
  13. gulama-0.2.0/src/agent/persona.py +310 -0
  14. gulama-0.2.0/src/agent/sub_agents.py +268 -0
  15. gulama-0.2.0/src/agent/tool_executor.py +213 -0
  16. gulama-0.2.0/src/channels/__init__.py +6 -0
  17. gulama-0.2.0/src/channels/base.py +45 -0
  18. gulama-0.2.0/src/channels/cli.py +190 -0
  19. gulama-0.2.0/src/channels/discord_adapter.py +263 -0
  20. gulama-0.2.0/src/channels/google_chat.py +85 -0
  21. gulama-0.2.0/src/channels/matrix.py +113 -0
  22. gulama-0.2.0/src/channels/scheduler.py +313 -0
  23. gulama-0.2.0/src/channels/slack.py +322 -0
  24. gulama-0.2.0/src/channels/teams.py +95 -0
  25. gulama-0.2.0/src/channels/telegram.py +253 -0
  26. gulama-0.2.0/src/channels/voice_wake.py +259 -0
  27. gulama-0.2.0/src/channels/web.py +223 -0
  28. gulama-0.2.0/src/channels/whatsapp.py +328 -0
  29. gulama-0.2.0/src/cli/__init__.py +6 -0
  30. gulama-0.2.0/src/cli/commands.py +560 -0
  31. gulama-0.2.0/src/cli/doctor.py +380 -0
  32. gulama-0.2.0/src/cli/setup_wizard.py +279 -0
  33. gulama-0.2.0/src/constants.py +79 -0
  34. gulama-0.2.0/src/gateway/__init__.py +6 -0
  35. gulama-0.2.0/src/gateway/app.py +168 -0
  36. gulama-0.2.0/src/gateway/auth.py +140 -0
  37. gulama-0.2.0/src/gateway/config.py +185 -0
  38. gulama-0.2.0/src/gateway/debug_ws.py +292 -0
  39. gulama-0.2.0/src/gateway/health.py +43 -0
  40. gulama-0.2.0/src/gateway/middleware.py +143 -0
  41. gulama-0.2.0/src/gateway/router.py +478 -0
  42. gulama-0.2.0/src/gateway/websocket.py +156 -0
  43. gulama-0.2.0/src/main.py +90 -0
  44. gulama-0.2.0/src/memory/__init__.py +7 -0
  45. gulama-0.2.0/src/memory/encryption.py +72 -0
  46. gulama-0.2.0/src/memory/migration.py +148 -0
  47. gulama-0.2.0/src/memory/schema.py +70 -0
  48. gulama-0.2.0/src/memory/store.py +282 -0
  49. gulama-0.2.0/src/memory/summarizer.py +295 -0
  50. gulama-0.2.0/src/memory/vector_store.py +304 -0
  51. gulama-0.2.0/src/security/__init__.py +34 -0
  52. gulama-0.2.0/src/security/audit_logger.py +198 -0
  53. gulama-0.2.0/src/security/canary.py +247 -0
  54. gulama-0.2.0/src/security/compliance.py +325 -0
  55. gulama-0.2.0/src/security/egress_filter.py +151 -0
  56. gulama-0.2.0/src/security/input_validator.py +239 -0
  57. gulama-0.2.0/src/security/policy_engine.py +450 -0
  58. gulama-0.2.0/src/security/rbac.py +388 -0
  59. gulama-0.2.0/src/security/sandbox.py +313 -0
  60. gulama-0.2.0/src/security/secrets_vault.py +225 -0
  61. gulama-0.2.0/src/security/skill_verifier.py +105 -0
  62. gulama-0.2.0/src/security/sso.py +296 -0
  63. gulama-0.2.0/src/security/team.py +360 -0
  64. gulama-0.2.0/src/security/threat_detector.py +395 -0
  65. gulama-0.2.0/src/skills/__init__.py +6 -0
  66. gulama-0.2.0/src/skills/base.py +90 -0
  67. gulama-0.2.0/src/skills/builtin/__init__.py +21 -0
  68. gulama-0.2.0/src/skills/builtin/browser.py +430 -0
  69. gulama-0.2.0/src/skills/builtin/calendar_skill.py +401 -0
  70. gulama-0.2.0/src/skills/builtin/code_exec.py +229 -0
  71. gulama-0.2.0/src/skills/builtin/email_skill.py +330 -0
  72. gulama-0.2.0/src/skills/builtin/file_manager.py +150 -0
  73. gulama-0.2.0/src/skills/builtin/github_skill.py +304 -0
  74. gulama-0.2.0/src/skills/builtin/google_docs_skill.py +292 -0
  75. gulama-0.2.0/src/skills/builtin/image_gen.py +393 -0
  76. gulama-0.2.0/src/skills/builtin/mcp_bridge.py +385 -0
  77. gulama-0.2.0/src/skills/builtin/notes.py +152 -0
  78. gulama-0.2.0/src/skills/builtin/notion_skill.py +287 -0
  79. gulama-0.2.0/src/skills/builtin/productivity_skill.py +335 -0
  80. gulama-0.2.0/src/skills/builtin/shell_exec.py +106 -0
  81. gulama-0.2.0/src/skills/builtin/smart_home.py +332 -0
  82. gulama-0.2.0/src/skills/builtin/spotify_skill.py +235 -0
  83. gulama-0.2.0/src/skills/builtin/twitter_skill.py +184 -0
  84. gulama-0.2.0/src/skills/builtin/voice_skill.py +412 -0
  85. gulama-0.2.0/src/skills/builtin/web_search.py +208 -0
  86. gulama-0.2.0/src/skills/marketplace.py +244 -0
  87. gulama-0.2.0/src/skills/registry.py +110 -0
  88. gulama-0.2.0/src/skills/scanner.py +322 -0
  89. gulama-0.2.0/src/skills/self_modifier.py +281 -0
  90. gulama-0.2.0/src/skills/signer.py +205 -0
  91. gulama-0.2.0/src/utils/__init__.py +7 -0
  92. gulama-0.2.0/src/utils/cost_tracker.py +217 -0
  93. gulama-0.2.0/src/utils/logging.py +88 -0
  94. gulama-0.2.0/src/utils/platform.py +136 -0
  95. gulama-0.2.0/web/src/App.tsx +105 -0
  96. gulama-0.2.0/web/src/Chat.tsx +221 -0
  97. gulama-0.2.0/web/src/Dashboard.tsx +171 -0
  98. gulama-0.2.0/web/src/Settings.tsx +216 -0
  99. gulama-0.2.0/web/src/index.css +45 -0
  100. gulama-0.2.0/web/src/main.tsx +10 -0
@@ -0,0 +1,71 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg-info/
7
+ dist/
8
+ build/
9
+ .eggs/
10
+
11
+ # Virtual environments
12
+ .venv/
13
+ venv/
14
+ env/
15
+
16
+ # IDE
17
+ .idea/
18
+ .vscode/
19
+ *.swp
20
+ *.swo
21
+ *~
22
+
23
+ # Testing
24
+ .pytest_cache/
25
+ .mypy_cache/
26
+ .ruff_cache/
27
+ htmlcov/
28
+ .coverage
29
+ coverage.xml
30
+
31
+ # Environment & Secrets — NEVER commit these
32
+ .env
33
+ .env.local
34
+ .env.production
35
+ *.age
36
+ *.key
37
+ *.pem
38
+ vault.*
39
+ !.env.example
40
+
41
+ # Gulama data directory (may exist during dev)
42
+ .gulama/
43
+
44
+ # OS files
45
+ .DS_Store
46
+ Thumbs.db
47
+ desktop.ini
48
+ nul
49
+
50
+ # Claude Code
51
+ .claude/
52
+
53
+ # PDFs (analysis docs, not source code)
54
+ *.pdf
55
+
56
+ # Docker
57
+ docker-compose.override.yml
58
+
59
+ # Rust
60
+ target/
61
+
62
+ # Node (web UI)
63
+ node_modules/
64
+ web/dist/
65
+
66
+ # Logs
67
+ *.log
68
+ logs/
69
+
70
+ # Cache
71
+ cache/
@@ -0,0 +1,39 @@
1
+ # Changelog
2
+
3
+ All notable changes to Gulama will be documented in this file.
4
+
5
+ ## [0.2.0] - 2025-02-15
6
+
7
+ ### Added
8
+ - **19 built-in skills**: File Manager, Shell Exec, Web Search, Notes, Code Exec, Browser, Email, Calendar, MCP Bridge, Voice, Image Gen, Smart Home, GitHub, Notion, Spotify, Twitter/X, Google Docs, Productivity (Trello/Linear/Todoist/Obsidian), Self-Modify
9
+ - **8 communication channels**: CLI, Telegram, Discord, Slack, WhatsApp, Matrix (E2E encrypted), Microsoft Teams, Google Chat
10
+ - **GulamaHub marketplace**: Ed25519-signed skill marketplace with search, install, publish
11
+ - **Self-modifying skills**: AI can create/test/register its own skills at runtime with security scanning
12
+ - **Voice wake word**: "Hey Gulama" via Picovoice Porcupine with energy-based fallback
13
+ - **WebSocket debug tools**: Real-time tool call, policy decision, token usage streaming
14
+ - **Docker production deployment**: Multi-stage build, Caddy auto-TLS, Watchtower
15
+ - **Sub-agent manager**: Spawn background agents for parallel tasks
16
+ - **Task scheduler**: Cron, interval, and one-shot task scheduling
17
+ - **29 REST API endpoints**: Full gateway API with TOTP authentication
18
+ - **CI/CD pipeline**: GitHub Actions with lint, test, security scan, Docker build, PyPI publish
19
+ - **Integration tests**: Brain flow, gateway endpoints, skill execution, security pipeline
20
+
21
+ ### Security
22
+ - **15+ security mechanisms**: Policy engine, sandbox, canary tokens, audit, DLP, egress filter, RBAC, SSO, threat detection, input validation, security headers
23
+ - **Signed marketplace**: Ed25519 mandatory verification for all community skills
24
+ - **Self-modifier scanning**: Blocks dangerous code patterns (subprocess, eval, exec, ctypes)
25
+
26
+ ## [0.1.0] - 2025-02-10
27
+
28
+ ### Added
29
+ - Initial release with core agent brain
30
+ - LiteLLM universal LLM support (100+ providers)
31
+ - Encrypted SQLite memory store
32
+ - AES-256-GCM secrets vault
33
+ - Cedar-inspired policy engine
34
+ - bubblewrap sandbox
35
+ - Canary token system
36
+ - Hash-chain audit logger
37
+ - TOTP authentication gateway
38
+ - CLI and Telegram channels
39
+ - 4 core skills: File Manager, Shell Exec, Web Search, Notes
gulama-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Santosh — Astra Fintech Labs Pvt. Ltd.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
gulama-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,418 @@
1
+ Metadata-Version: 2.4
2
+ Name: gulama
3
+ Version: 0.2.0
4
+ Summary: Secure, open-source personal AI agent platform — OpenClaw, but secure.
5
+ Project-URL: Homepage, https://gulama.ai
6
+ Project-URL: Repository, https://github.com/san-techie21/gulama-bot
7
+ Project-URL: Documentation, https://gulama.dev
8
+ Project-URL: Issues, https://github.com/san-techie21/gulama-bot/issues
9
+ Project-URL: Changelog, https://github.com/san-techie21/gulama-bot/blob/main/CHANGELOG.md
10
+ Author-email: Santosh <santosh@astrafintechlabs.com>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: agent,ai,automation,chatbot,llm,personal-assistant,security
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: System Administrators
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Classifier: Topic :: Security
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.12
24
+ Requires-Dist: chromadb>=0.6
25
+ Requires-Dist: click>=8.1
26
+ Requires-Dist: cryptography>=44.0
27
+ Requires-Dist: diskcache>=5.6
28
+ Requires-Dist: fastapi>=0.115
29
+ Requires-Dist: httpx>=0.28
30
+ Requires-Dist: keyring>=25.0
31
+ Requires-Dist: litellm>=1.56
32
+ Requires-Dist: pydantic-settings>=2.7
33
+ Requires-Dist: pydantic>=2.10
34
+ Requires-Dist: pyotp>=2.9
35
+ Requires-Dist: python-dotenv>=1.0
36
+ Requires-Dist: python-telegram-bot>=22.0
37
+ Requires-Dist: rich>=13.9
38
+ Requires-Dist: sentence-transformers>=3.3
39
+ Requires-Dist: structlog>=24.4
40
+ Requires-Dist: tomli-w>=1.1
41
+ Requires-Dist: tomli>=2.2
42
+ Requires-Dist: uvicorn[standard]>=0.34
43
+ Requires-Dist: websockets>=14.0
44
+ Provides-Extra: all-channels
45
+ Requires-Dist: discord-py>=2.4; extra == 'all-channels'
46
+ Requires-Dist: matrix-nio[e2e]>=0.24; extra == 'all-channels'
47
+ Requires-Dist: playwright>=1.48; extra == 'all-channels'
48
+ Requires-Dist: slack-sdk>=3.33; extra == 'all-channels'
49
+ Provides-Extra: all-skills
50
+ Requires-Dist: caldav>=1.4; extra == 'all-skills'
51
+ Requires-Dist: google-api-python-client>=2.150; extra == 'all-skills'
52
+ Requires-Dist: google-auth>=2.30; extra == 'all-skills'
53
+ Requires-Dist: openai>=1.50; extra == 'all-skills'
54
+ Requires-Dist: playwright>=1.48; extra == 'all-skills'
55
+ Provides-Extra: browser
56
+ Requires-Dist: playwright>=1.48; extra == 'browser'
57
+ Provides-Extra: browser-ai
58
+ Requires-Dist: browser-use>=0.1; extra == 'browser-ai'
59
+ Requires-Dist: langchain-openai>=0.2; extra == 'browser-ai'
60
+ Requires-Dist: playwright>=1.48; extra == 'browser-ai'
61
+ Provides-Extra: calendar
62
+ Requires-Dist: caldav>=1.4; extra == 'calendar'
63
+ Requires-Dist: google-api-python-client>=2.150; extra == 'calendar'
64
+ Provides-Extra: dev
65
+ Requires-Dist: bandit>=1.7; extra == 'dev'
66
+ Requires-Dist: mypy>=1.13; extra == 'dev'
67
+ Requires-Dist: pip-audit>=2.7; extra == 'dev'
68
+ Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
69
+ Requires-Dist: pytest-cov>=6.0; extra == 'dev'
70
+ Requires-Dist: pytest>=8.0; extra == 'dev'
71
+ Requires-Dist: ruff<0.16,>=0.15; extra == 'dev'
72
+ Provides-Extra: discord
73
+ Requires-Dist: discord-py>=2.4; extra == 'discord'
74
+ Provides-Extra: email
75
+ Provides-Extra: full
76
+ Requires-Dist: browser-use>=0.1; extra == 'full'
77
+ Requires-Dist: caldav>=1.4; extra == 'full'
78
+ Requires-Dist: discord-py>=2.4; extra == 'full'
79
+ Requires-Dist: google-api-python-client>=2.150; extra == 'full'
80
+ Requires-Dist: google-auth>=2.30; extra == 'full'
81
+ Requires-Dist: langchain-openai>=0.2; extra == 'full'
82
+ Requires-Dist: matrix-nio[e2e]>=0.24; extra == 'full'
83
+ Requires-Dist: openai>=1.50; extra == 'full'
84
+ Requires-Dist: playwright>=1.48; extra == 'full'
85
+ Requires-Dist: slack-sdk>=3.33; extra == 'full'
86
+ Provides-Extra: google-workspace
87
+ Requires-Dist: google-api-python-client>=2.150; extra == 'google-workspace'
88
+ Requires-Dist: google-auth>=2.30; extra == 'google-workspace'
89
+ Provides-Extra: image
90
+ Requires-Dist: openai>=1.50; extra == 'image'
91
+ Provides-Extra: matrix
92
+ Requires-Dist: matrix-nio[e2e]>=0.24; extra == 'matrix'
93
+ Provides-Extra: rust
94
+ Requires-Dist: maturin>=1.7; extra == 'rust'
95
+ Provides-Extra: saml
96
+ Requires-Dist: python3-saml>=1.16; extra == 'saml'
97
+ Provides-Extra: slack
98
+ Requires-Dist: slack-sdk>=3.33; extra == 'slack'
99
+ Provides-Extra: teams
100
+ Requires-Dist: botbuilder-core>=4.15; extra == 'teams'
101
+ Provides-Extra: voice
102
+ Requires-Dist: elevenlabs>=1.0; extra == 'voice'
103
+ Requires-Dist: gtts>=2.5; extra == 'voice'
104
+ Requires-Dist: openai-whisper>=20240930; extra == 'voice'
105
+ Provides-Extra: voice-wake
106
+ Requires-Dist: pvporcupine>=3.0; extra == 'voice-wake'
107
+ Requires-Dist: pyaudio>=0.2; extra == 'voice-wake'
108
+ Provides-Extra: whatsapp
109
+ Description-Content-Type: text/markdown
110
+
111
+ <p align="center">
112
+ <img src="media/Gulama.png" alt="Gulama" width="200"/>
113
+ </p>
114
+
115
+ <h1 align="center">Gulama</h1>
116
+
117
+ <p align="center">
118
+ <strong>Secure, open-source personal AI agent platform — OpenClaw, but secure.</strong>
119
+ </p>
120
+
121
+ <p align="center">
122
+ Gulama is a security-first AI assistant with <b>19 skills</b>, <b>8 channels</b>, a <b>signed skill marketplace</b>, and support for <b>100+ LLM providers</b>. Runs on macOS, Windows, Linux, Docker, and ARM.
123
+ </p>
124
+
125
+ <p align="center">
126
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"/></a>
127
+ <a href="https://python.org"><img src="https://img.shields.io/badge/Python-3.12+-green.svg" alt="Python 3.12+"/></a>
128
+ <a href="https://github.com/san-techie21/gulama-bot/actions"><img src="https://github.com/san-techie21/gulama-bot/actions/workflows/ci.yml/badge.svg" alt="CI"/></a>
129
+ <a href="https://pypi.org/project/gulama/"><img src="https://img.shields.io/pypi/v/gulama.svg" alt="PyPI"/></a>
130
+ <img src="https://img.shields.io/badge/Security-15%2B%20mechanisms-red.svg" alt="Security"/>
131
+ </p>
132
+
133
+ ## Why Gulama?
134
+
135
+ Personal AI agents handle sensitive data — your files, emails, credentials, and conversations. Most existing solutions (including OpenClaw with its [341 malicious skills](https://www.securityweek.com/openclaw-vulnerabilities/)) treat security as an afterthought. **Gulama is built security-first from the ground up.**
136
+
137
+ ### Security Architecture (15+ Mechanisms)
138
+
139
+ - **Encrypted at rest** — AES-256-GCM for all credentials, never plaintext
140
+ - **Sandboxed execution** — bubblewrap/Docker/OS sandbox for every tool
141
+ - **Policy engine** — Deterministic Cedar-inspired authorization
142
+ - **Canary tokens** — Real-time prompt injection detection
143
+ - **Tamper-proof audit logs** — Hash-chain audit trail
144
+ - **Egress filtering + DLP** — Prevents data exfiltration and credential leaks
145
+ - **Signed skills (GulamaHub)** — Ed25519 verification prevents supply-chain attacks
146
+ - **TOTP authentication** — Time-based one-time passwords for API access
147
+ - **Rate limiting** — Per-IP request throttling
148
+ - **Input validation** — Content scanning and sanitization
149
+ - **Loopback binding** — Gateway binds 127.0.0.1 only (never 0.0.0.0 without explicit flag)
150
+ - **Threat detection** — Brute force, privilege escalation, anomaly detection
151
+ - **RBAC** — Role-based access control with team management
152
+ - **SSO/API keys** — OIDC, SAML, API key authentication
153
+ - **Security headers** — HSTS, CSP, X-Frame-Options, and more
154
+
155
+ ## Quick Start
156
+
157
+ ### One-Line Install
158
+
159
+ ```bash
160
+ pip install gulama
161
+ ```
162
+
163
+ ### With All Features
164
+
165
+ ```bash
166
+ pip install gulama[full]
167
+ ```
168
+
169
+ ### Setup
170
+
171
+ ```bash
172
+ gulama setup
173
+ ```
174
+
175
+ The setup wizard walks you through:
176
+ 1. Creating a master password (encrypts all credentials)
177
+ 2. Choosing your LLM provider and entering your API key
178
+ 3. Setting your autonomy level
179
+ 4. Optional channel configuration
180
+
181
+ ### Run
182
+
183
+ ```bash
184
+ # Interactive CLI chat
185
+ gulama chat
186
+
187
+ # Start the gateway server (REST API + WebSocket)
188
+ gulama start
189
+
190
+ # Start with specific channel
191
+ gulama start --channel telegram
192
+ gulama start --channel discord
193
+ gulama start --channel matrix
194
+
195
+ # Start with always-on voice
196
+ gulama start --voice-wake
197
+
198
+ # Security health check
199
+ gulama doctor
200
+ ```
201
+
202
+ ### Docker
203
+
204
+ ```bash
205
+ # Standard deployment
206
+ docker compose up -d
207
+
208
+ # With Redis + ChromaDB
209
+ docker compose --profile full up -d
210
+
211
+ # Cloud deployment (auto-TLS via Caddy)
212
+ docker compose -f docker-compose.yml -f docker-compose.cloud.yml up -d
213
+ ```
214
+
215
+ ## 19 Built-In Skills
216
+
217
+ | Skill | Description | API/Service |
218
+ |-------|-------------|-------------|
219
+ | **File Manager** | Read, write, search files | Local filesystem |
220
+ | **Shell Exec** | Execute commands in sandbox | OS shell |
221
+ | **Web Search** | Search and fetch web pages | DuckDuckGo/SearXNG |
222
+ | **Notes** | Save/recall facts and preferences | Local memory |
223
+ | **Code Exec** | Run Python/JS/Bash snippets | Sandboxed runtime |
224
+ | **Browser** | Navigate, screenshot, AI browsing | Playwright + browser-use |
225
+ | **Email** | Read, compose, send emails | IMAP/SMTP |
226
+ | **Calendar** | Manage events and schedules | Google Calendar/CalDAV |
227
+ | **MCP Bridge** | Connect to MCP servers | Model Context Protocol |
228
+ | **Voice** | Speech-to-text and text-to-speech | Whisper/Deepgram/ElevenLabs |
229
+ | **Image Gen** | Generate images from text | DALL-E/Stability AI/Replicate |
230
+ | **Smart Home** | Control IoT devices | Home Assistant |
231
+ | **GitHub** | Repos, issues, PRs, code search | GitHub API |
232
+ | **Notion** | Pages, databases, search | Notion API |
233
+ | **Spotify** | Playback, search, playlists | Spotify Web API |
234
+ | **Twitter/X** | Tweet search, user info | Twitter API v2 |
235
+ | **Google Docs** | Docs, Sheets, Drive | Google Workspace APIs |
236
+ | **Productivity** | Trello, Linear, Todoist, Obsidian | Multi-service |
237
+ | **Self-Modify** | AI writes its own new skills | Runtime skill authoring |
238
+
239
+ ## 8 Communication Channels
240
+
241
+ | Channel | Status | Protocol |
242
+ |---------|--------|----------|
243
+ | **CLI** | Ready | Interactive terminal |
244
+ | **Telegram** | Ready | Bot API |
245
+ | **Discord** | Ready | discord.py |
246
+ | **Slack** | Ready | Slack SDK + Webhooks |
247
+ | **WhatsApp** | Ready | Cloud API |
248
+ | **Matrix** | Ready | matrix-nio (E2E encrypted) |
249
+ | **Microsoft Teams** | Ready | Bot Framework webhooks |
250
+ | **Google Chat** | Ready | Workspace webhooks |
251
+
252
+ Plus: **Web UI** channel and **Voice Wake** (always-on "Hey Gulama" listener).
253
+
254
+ ## Universal LLM Support
255
+
256
+ Works with **any** LLM provider via LiteLLM:
257
+
258
+ | Provider | Models |
259
+ |----------|--------|
260
+ | Anthropic | Claude Sonnet 4.5, Opus 4.6, Haiku 4.5 |
261
+ | OpenAI | GPT-4o, o1, o3-mini |
262
+ | Google | Gemini 2.0 Flash, Pro |
263
+ | DeepSeek | DeepSeek Chat, Reasoner |
264
+ | Alibaba | Qwen Plus, Max, Turbo |
265
+ | Groq | Llama 3.3, Mixtral |
266
+ | Ollama | Any local model |
267
+ | Together AI | Llama, Mistral, and more |
268
+ | AWS Bedrock | All Bedrock models |
269
+ | Azure OpenAI | All Azure models |
270
+ | 90+ more | Any OpenAI-compatible endpoint |
271
+
272
+ ## GulamaHub — Secure Skill Marketplace
273
+
274
+ Unlike other agent platforms, **every community skill must be Ed25519-signed**. No exceptions.
275
+
276
+ ```bash
277
+ # Search skills
278
+ gulama hub search "weather"
279
+
280
+ # Install (signature verified automatically)
281
+ gulama hub install weather-checker
282
+
283
+ # Publish your own (signing required)
284
+ gulama hub publish my-skill --sign
285
+ ```
286
+
287
+ The agent can also **write its own skills** at runtime via the Self-Modify skill — with full sandboxing and security scanning.
288
+
289
+ ## Architecture
290
+
291
+ ```
292
+ ┌──────────────────────────────────────────────────────────┐
293
+ │ Channels (8) │
294
+ │ CLI │ Telegram │ Discord │ Slack │ WhatsApp │ Matrix │
295
+ │ Teams │ Google Chat │ Web UI │ Voice Wake │
296
+ ├──────────────────────────────────────────────────────────┤
297
+ │ Gateway (FastAPI) — 29 Routes │
298
+ │ TOTP Auth │ Rate Limit │ CORS │ Security Headers │
299
+ ├──────────────────────────────────────────────────────────┤
300
+ │ Agent Brain │
301
+ │ Context Builder (RAG) │ LLM Router │ Tool Calling Loop │
302
+ │ Sub-Agent Manager │ Task Scheduler │
303
+ ├──────────────────────────────────────────────────────────┤
304
+ │ Security Layer (15+) │
305
+ │ Policy Engine │ Sandbox │ Canary │ Audit │ DLP │ Egress │
306
+ │ RBAC │ SSO │ Threat Detection │ Input Validation │
307
+ ├──────────────────────────────────────────────────────────┤
308
+ │ Skills (19 Built-in + Marketplace) │
309
+ │ Files │ Shell │ Web │ Browser │ Email │ Calendar │ Voice │
310
+ │ GitHub │ Notion │ Spotify │ Google Docs │ Self-Modify │
311
+ ├──────────────────────────────────────────────────────────┤
312
+ │ Storage Layer │
313
+ │ Encrypted SQLite │ ChromaDB (RAG) │ Secrets Vault │
314
+ │ Hash-Chain Audit │ Disk Cache │
315
+ ├──────────────────────────────────────────────────────────┤
316
+ │ Debug & Monitoring │
317
+ │ WebSocket Debug Stream │ Cost Tracking │ Token Budgets │
318
+ └──────────────────────────────────────────────────────────┘
319
+ ```
320
+
321
+ ## REST API (29 Endpoints)
322
+
323
+ | Endpoint | Description |
324
+ |----------|-------------|
325
+ | `POST /api/v1/chat` | Send message to agent |
326
+ | `GET /api/v1/status` | Agent status and stats |
327
+ | `GET /api/v1/skills` | List all registered skills |
328
+ | `GET /api/v1/agents` | List background sub-agents |
329
+ | `POST /api/v1/agents/spawn` | Spawn background agent |
330
+ | `GET /api/v1/scheduler/tasks` | List scheduled tasks |
331
+ | `GET /api/v1/hub/search` | Search skill marketplace |
332
+ | `GET /api/v1/conversations` | List conversations |
333
+ | `GET /api/v1/audit` | View audit log |
334
+ | `GET /api/v1/cost/today` | Token usage and cost |
335
+ | `GET /api/v1/debug/events` | Debug event stream |
336
+ | `ws://localhost:18789/ws/chat` | Real-time WebSocket chat |
337
+ | `ws://localhost:18789/ws/debug` | Live debug inspector |
338
+
339
+ ## Autonomy Levels
340
+
341
+ | Level | Name | Behavior |
342
+ |-------|------|----------|
343
+ | 0 | Observer | Ask before every action |
344
+ | 1 | Assistant | Auto-read, ask before writes |
345
+ | 2 | Co-pilot | Auto safe actions, ask before shell/network |
346
+ | 3 | Autopilot-cautious | Auto most things, ask before destructive |
347
+ | 4 | Autopilot | Auto everything except financial/credential |
348
+
349
+ ## Development
350
+
351
+ ```bash
352
+ # Clone
353
+ git clone https://github.com/san-techie21/gulama-bot.git
354
+ cd gulama-bot
355
+
356
+ # Setup dev environment
357
+ pip install -e ".[dev]"
358
+
359
+ # Run tests (209 tests)
360
+ python -m pytest tests/ -v
361
+
362
+ # Security health check
363
+ gulama doctor --json-output
364
+
365
+ # Lint
366
+ ruff check src/
367
+ ```
368
+
369
+ ## Configuration
370
+
371
+ Configuration is loaded from:
372
+ 1. `config/default.toml` (secure defaults)
373
+ 2. `~/.gulama/config.toml` (user overrides)
374
+ 3. Environment variables (`GULAMA_*`)
375
+ 4. `.env` file (for secrets — see `.env.example`)
376
+
377
+ Key security defaults (cannot be disabled without `--i-know-what-im-doing`):
378
+ - Gateway binds to `127.0.0.1` only
379
+ - Sandbox enabled
380
+ - Policy engine enabled
381
+ - Audit logging enabled
382
+ - Skill signatures required
383
+
384
+ ## Deployment
385
+
386
+ | Method | Command | Use Case |
387
+ |--------|---------|----------|
388
+ | **pip install** | `pip install gulama` | Local development |
389
+ | **Docker** | `docker compose up -d` | Self-hosted server |
390
+ | **Cloud** | `docker compose -f ... up -d` | DigitalOcean/AWS/GCP |
391
+ | **Docker + TLS** | With `docker-compose.cloud.yml` | Production with auto-HTTPS |
392
+
393
+ ## vs OpenClaw
394
+
395
+ | Feature | Gulama | OpenClaw |
396
+ |---------|--------|----------|
397
+ | Security mechanisms | 15+ | ~0 |
398
+ | Memory encryption | AES-256-GCM | None |
399
+ | Skill signing | Ed25519 mandatory | None (341 malicious skills found) |
400
+ | LLM providers | 100+ (LiteLLM) | ~5 |
401
+ | Policy engine | Cedar-inspired | None |
402
+ | Sandbox | bubblewrap/Docker | Container-only |
403
+ | Audit trail | Hash-chain | Basic logs |
404
+ | Cost controls | Per-day budgets | None |
405
+ | Self-modifying skills | Yes (sandboxed) | No |
406
+ | License | MIT | MIT |
407
+
408
+ ## License
409
+
410
+ MIT License. See [LICENSE](LICENSE).
411
+
412
+ ## Security
413
+
414
+ Found a vulnerability? Please report it responsibly via [GitHub Issues](https://github.com/san-techie21/gulama-bot/issues) with the `security` label.
415
+
416
+ ---
417
+
418
+ **Built with security as the #1 priority by [Astra Fintech Labs](https://astrafintechlabs.com).**