Founder, Complex Developers
Joe Munene.
I build security-focused AI from the model up.
I train language models from scratch, build the agent runtimes that make them safe to deploy, and ship production security tooling around them. A merged contribution to AutoGPT, a package on PyPI, and a model family on HuggingFace are the receipts.

Proof, not adjectives
01. About Me
I'm Joe Munene, founder of Complex Developers. I build security-focused AI systems from the model up: language models trained from scratch, the agent runtimes that make them safe to deploy, and production security tooling around them.
GhostLM is an 81M-parameter language model I trained from scratch in PyTorch, no transformers library, on a 422M-token security corpus. ghostloop is a fail-closed safety runtime for embodied agents, published on PyPI, with a verification surface most agent stacks lack: STL temporal properties, counterfactual replay, and causal failure attribution. Around them sits a suite of production security tooling spanning recon, intrusion detection, malware triage, and cloud posture.
I study Computer Science at Moi University in Nairobi. The work is the argument: trained from scratch, shipped to PyPI and the Google Play Store, and merged upstream into projects like AutoGPT.
/ Skills & Expertise
Languages
Web & Backend
Mobile
AI & ML
Reinforcement Learning
Robotics & Embodied AI
Computer Vision
Formal Methods & Verification
Cybersecurity
DevOps & Infra
Observability & Quality
/ Services
Four areas I take engagements in, each backed by shipped work you can poke at. I run scope, architecture, and delivery end-to-end; you get production code with auth, observability, and a handover package, not a prototype with TODOs.
Custom CRMs & Admin Dashboards
Production-grade customer platforms: contacts, deals, tasks, and metrics, with auth, audit logs, and role-based access from day one.
- Next.js 15 / 16 App Router with route-group isolation
- Postgres + Prisma data layer, migrations from commit one
- NextAuth or JWT auth with role-based admin views
- Visual deals pipeline, task management, activity logging
- Vercel + Supabase deploy or self-hosted Postgres
SaaS Web Apps & Production Platforms
Full-stack product builds, paywall to dashboard. Stripe billing, transactional email, analytics, error reporting, all wired and shipped.
- Stripe subscriptions + usage-based billing
- PostHog analytics, Sentry error reporting
- Resend / Postmark transactional email
- Feature flags + staged rollout (Vercel / GrowthBook)
- Public marketing site + authed product, one codebase
AI Integrations & Agent Safety
LLM-backed features that don't melt down in production. Custom MCP servers, policy-gated tool use, audit-trail dashboards.
- Claude / Groq / OpenAI integration with cost controls
- Custom MCP servers exposing safe tool subsets
- Policy-gated agent pipelines (allow / deny / rate-limit / review)
- Real-time audit trail + observability dashboards
- From-scratch transformer work where off-the-shelf isn't enough
Cybersecurity Audits & Tooling
K8s posture audits, memory forensics, SIEM rules, and pre-commit secret scanning. Production CLIs, not slide decks.
- 23 CIS-based Kubernetes security checks (HTML / JSON for CI gates)
- Memory forensics with YARA scanning + STIX 2.1 IOC export
- SIGMA-rule-driven SIEM with detection-as-code
- Pre-commit secret + anti-pattern detection (hook / Action / CLI)
- Penetration testing engagements + remediation report
Have a CRM, SaaS, or security project on the table?
I take a small number of client engagements per quarter. Tell me what you're building.
02. Experience
03. Currently Building
Ghost-small (81M) is benched out at the 30% CTIBench / 0-2% fact-recall ceiling. Confirmed empirically across 6 ghostbench bets after the v0.9.32 corpus rebuild and v0.9.33 SFT push. The honest finding: it's a parameter ceiling, not a corpus problem, so the next move is the rented-GPU ghost-base v1.0 run (~360M params, SmolLM2-360M shape) on the new 422M-token corpus. Pretrain code share moved 2.4% → 11.6% via a 105-repo / 15-language open-source code pull this release cycle. SFT corpus is now ghost-base ready: ~1,940 cybersec records across 12 differentiation bets + 1,981 code records (code SFT surpassed cybersec for the first time at v0.9.29).
Highlights · Horizontal Scroll
GhostLM
81M params · 422M-token corpus · pure PyTorchAn 81M-parameter cybersecurity language model trained from scratch in PyTorch (RoPE, SwiGLU, RMSNorm), with a tool-using agent runtime, multi-vendor API and MCP servers, and a statistically rigorous eval suite.
/ Code — live
Not a demo, not a gist — actual excerpts from shipped projects. Pick a sample or let it cycle.
▋04. My Work
A curated selection of projects spanning cybersecurity, AI, web development, and automation tools. Each project reflects real-world problem solving and technical depth.
linkdrop
iPhone ↔ Linux companion app. Browse photos and files, see notifications, and mirror the screen. Ubuntu's answer to Phone Link. Cross-platform desktop build (Linux/macOS/Windows) with a daemon-backed pymobiledevice3 bridge. v0.7.1 shipped with CI-built .deb/.AppImage artifacts.
EZCare Native
AI-powered wellness companion shipped to the Google Play Store. React Native + Expo SDK 54 with Better Auth, Supabase backend (PostgreSQL + Auth + Storage), tRPC + TanStack Query data layer, RN Skia + Reanimated animations, React Three Fiber 3D scenes, expo-camera / haptics / voice integrations, and Anthropic SDK for the AI wellness coach (EZBuddy). Bun + Turborepo monorepo with shared api / auth / config / db / env packages across native, web, and server apps. Built and submitted via EAS Build & Submit.

GhostLM
An open-source cybersecurity language model built from scratch in PyTorch. 81M-parameter decoder-only transformer (RoPE + SwiGLU + RMSNorm) trained on a 422M-token / 768K-record multi-domain corpus: cybersec writeups, NVD CVEs, MITRE/CWE/OWASP, NIST SP 800, the FineWeb-Edu educational subset, open-web-math reasoning, and a 105-repo / 15-language open-source code pull (cpython stdlib, the Go and Rust ecosystems, the JS / TS / C / C++ / Java / Ruby families, ~42M code tokens). Ships GhostAgent (a tool-using runtime with bet-1 tool-call + bet-9 cite-tag parsing), a multi-vendor HTTP server speaking OpenAI Chat Completions / Anthropic Messages / Google Gemini / Ollama wire formats, an MCP server, and GhostBench (a packaged eval suite with Wilson 95% CIs and McNemar paired comparisons across 14 differentiation bets). 312 tests green, every collector reproducible from one CLI line.

ghostloop
The agent loop, embodied. A tool-using agent runtime, fail-closed safety pipeline, sim-first execution + statistically-rigorous bench harness + post-hoc analysis layer for embodied AI / robotics. Published on PyPI as v1.0.3 (`pip install ghostloop`), with a [live HuggingFace demo](https://huggingface.co/spaces/Ghostgim/ghostloop-demo) and full GitHub Actions CI/CD via PyPI Trusted Publishing OIDC (auto-create release pages, auto-redeploy Space). Six backends (Mock / MuJoCo / PyBullet / Gymnasium / ROS 2 / RandomizedBackend), 12 policy gates, MuJoCo Menagerie loader (Franka / UR5e / Stretch / Allegro / Spot / Aloha), LLMPolicy + VLAPolicy adapters, MCP server for Claude Desktop / Cursor / Continue / Cline / Zed / Gemini CLI, bench harness with Wilson CIs + McNemar + Cohen's h + Sim2Real transfer-gap + adversarial fuzzing (random / grid / CMA-ES). Novel surface no other robotics framework ships: STL temporal properties + auto-mining, counterfactual trace replay, causal failure attribution, LLM-as-judge, skill graph DAG, hindsight relabeling, energy ledger, cross-embodiment morphology registry, RGB-D fusion + lightweight object detection, VLA-on-MuJoCo benchmark vs OpenVLA / π0 / RT-2 / Octo / Diffusion Policy / ACT, production fleet dashboard (auth + rate limit + alarms + Prometheus), distillation pipeline, real-time deadline scheduler, live policy intervention (pause / resume / hot-swap / e-stop), system-identification calibration. 359 tests green. Family includes [ghostloop-ui](https://github.com/joemunene-by/ghostloop-ui) (Next.js dashboard) and [ghostloop-desktop](https://github.com/joemunene-by/ghostloop-desktop) v0.2 (Tauri 2 native app with voice control + gamepad rumble + native notifications).

ghostloop-ui
Public web control plane for the ghostloop runtime. Next.js 15 + React 19 + Tailwind 4 dashboard talking to a `ghostloop.dashboard.create_production_app` FastAPI backend. Live at [ghostloop-ui.vercel.app](https://ghostloop-ui.vercel.app) with the backend hosted free on Render. Fleet view, alarm tray with one-click acknowledge, episode timeline from the SQLite store, Prometheus metrics broken out per-counter, profile-aware gamepad mapper that auto-picks the right control scheme for drone / mobile base / quadruped / arm / humanoid robots. Three-path `/connect` onboarding designed for non-coders: open the live demo, run ghostloop locally with one pip command, or embed in an existing robot stack. Demo-mode fallback so the Vercel deploy stays interactive even when no backend is configured (every fixture response carries an `X-Ghostloop-Demo` header so the UI shows a banner explaining the swap path). The same gamepad library powers the desktop app's Tauri shell.

ghostloop-desktop
Native desktop control panel for ghostloop, v0.2.0 just shipped. Tauri 2 + Rust shell wrapping the ghostloop-ui Next.js frontend as a single-file desktop app for macOS / Windows / Linux. Voice control via the embedded WebView's Web Speech API on Windows + Linux ('ghostloop, stop / land / takeoff / pause'); native whisper.cpp lands in v0.3 for macOS parity. Gamepad rumble triggered on safety events (geofence block, force-cap trip, HITL escalation, e-stop) so the operator feels denials before they see the screen. Native OS notifications for alarms (toast / banner / libnotify, severity-tagged). Profile-aware gamepad input via gilrs polling at 120 Hz: drone, mobile base, quadruped, arm, humanoid each get an auto-applied control scheme. Wired and Bluetooth-paired controllers (Xbox / PS5 / 8BitDo / Stadia) are equivalent because gilrs talks the OS HID stack directly. Sidecar Python runtime via PyInstaller serves the dashboard backend on first launch with a SQLite store at `~/.ghostloop/store.db`. System-tray integration, global e-stop hotkey. Per-PR CI matrix (rustfmt + clippy + cargo check + cargo test on macOS / Linux / Windows) is green and runs on every push; cross-platform release-bundle pipeline (DMG / MSI / AppImage / deb / NSIS) is wired to tauri-action and parked behind workflow_dispatch until v0.2.1 finishes the Tauri-with-Next.js static-export switch.
ghostrecon
A passive OSINT reconnaissance framework for authorized assessments. Given a target domain it runs async, pluggable collectors against public sources (crt.sh certificate transparency, DNS A/AAAA/MX/NS/TXT, the Wayback Machine CDX API, and subdomain-to-IP resolution), builds a typed networkx entity graph of domains, subdomains, IPs, and URLs, correlates results to flag shared infrastructure, and emits self-contained HTML and JSON reports. Failure-isolated collectors, retries with backoff, and rate limiting mean one failing source never crashes a run. 26 tests, GitHub Actions CI green on Python 3.11 and 3.12.
ghostscope
An AI-based network intrusion detection tool. It learns a baseline of normal flow behavior and flags anomalies in new traffic with explainable alerts that name the features driving each detection. Ships two detectors behind one interface: a scikit-learn IsolationForest and a PyTorch reconstruction-error autoencoder, with a deterministic synthetic data generator (port scans, DDoS bursts, exfiltration) so the whole tool runs with zero external downloads. Threshold calibration from a held-out normal set, precision / recall / F1 / ROC-AUC evaluation (live eval F1 0.82, ROC-AUC 0.98 on synthetic data), and model persistence. 26 tests, CI green.
ghostchain
A static analysis security auditor for Solidity smart contracts. A comment- and string-aware source cleaner preserves exact line and column offsets while ten detectors map findings to the SWC registry: reentrancy (SWC-107), tx.origin auth (SWC-115), unchecked low-level call return (SWC-104), integer overflow on pre-0.8 pragma (SWC-101), unprotected selfdestruct (SWC-106), block.timestamp dependence (SWC-116), delegatecall to untrusted target (SWC-112), floating pragma (SWC-103), assert misuse (SWC-110), and missing visibility (SWC-100). Output to console, JSON, and SARIF 2.1.0 so it drops straight into GitHub code scanning. 46 tests, CI green.
ghostvault
A key management system with envelope encryption, built on vetted primitives from the cryptography library. A root key-encryption key is derived from a passphrase via scrypt (never stored); named AES-256 keys are kept GCM-wrapped at rest. Encryption generates a per-message data key, encrypts the plaintext with it, binds a context string as GCM associated data, then wraps the data key under the latest key version. Key rotation adds versions while old ciphertext still decrypts, and tampering, wrong keys, or wrong context all fail closed with no plaintext returned. Adds a sealed secret store and an append-only audit log. 44 tests, CI green.
ChartSentinel
Trading intelligence SaaS. Chart-event alerting and signal aggregation for retail and prop traders. Next.js + TypeScript stack with Stripe paywall, PostHog analytics, Sentry crash reporting, and Resend transactional email. Pre-launch site live at chartsentinel.com; production shipped end-to-end behind a feature flag.
Complex Developers CRM
The platform behind Complex Developers. Public marketing site + admin CRM. Next.js 15 App Router with route-group isolation, Prisma on Postgres, JWT auth, and a portfolio page wired directly to the admin database so featured projects go live the moment they're flagged.
High-End CRM
Production-ready CRM built with Next.js 16, React 19, TypeScript, Prisma, PostgreSQL, and NextAuth. Contact + company management, visual deals pipeline (Lead → Qualified → Proposal → Negotiation → Closed), task management with priorities and due dates, activity logging for calls / emails / meetings, and a metrics dashboard. Drop-in starter for client engagements.
More Projects
ghostsbom
A software supply-chain security analyzer. It parses Python (requirements.txt, poetry.lock, pyproject.toml) and npm (package-lock.json) manifests, generates a valid CycloneDX 1.5 SBOM with package URLs, scans dependencies for known vulnerabilities against the OSV.dev API, and adds supply-chain risk signals: Damerau-Levenshtein typosquat detection against a bundled popular-package list and explainable maintainer / version heuristics. Severity-sorted output to console, JSON, and a CI-gating exit code via `--fail-on`. Network is dependency-injected so the suite runs fully offline. 43 tests, CI green.
ghostcloud
A multi-cloud security posture management (CSPM) and misconfiguration scanner. It evaluates a normalized resource snapshot (so it runs deterministically with zero cloud credentials) against 17 best-practice checks across AWS, GCP, and Azure: public S3 / storage buckets, security groups open to the internet on admin ports, IAM users without MFA, wildcard policies, public databases, unencrypted volumes, disabled audit logging, service accounts with owner roles, and more. Per-check isolation, remediation guidance, console / JSON / SARIF 2.1.0 output, and a `--fail-on` CI gate. 44 tests, CI green.
ghostmap
A web application vulnerability scanner for authorized testing. An async, auth-aware crawler discovers links and forms within a same-domain scope (respecting robots.txt), then an injection engine probes every parameter and form field for reflected XSS (CWE-79, confirming unescaped execution context to cut false positives) and SQL injection (CWE-89, both error-based via multi-engine DB signatures and boolean-based differential detection). Findings carry payload, evidence, severity, and remediation, output to console, JSON, and SARIF 2.1.0. Tested end to end against an in-process vulnerable app, fully offline. 24 tests, CI green.
ghostpwn
An automated penetration-test orchestration engine, CI for pentest workflows. YAML files define a target, variables, and stages that chain through a dependency DAG with cycle detection, parallel execution under a concurrency cap, and safe data passing between stages via a restricted `${{ stages.id.outputs.x }}` resolver (no eval). Pluggable adapters include a deterministic mock, a safe `command` adapter (argv vector, no shell) for wiring in tools like ghostrecon and ghostmap with no code changes, plus built-in http_probe and dns_recon. Per-stage failure policy, timeouts, and a consolidated console / JSON report. 77 tests, CI green.
ghostbox
A static malware analysis sandbox for authorized triage that never executes samples. Eight analyzers run a static pipeline: hashing, magic-byte file typing (no libmagic), PE and ELF header / section / import parsing with a built-in fallback, whole-file and per-section Shannon entropy with packer heuristics, ASCII and UTF-16 string extraction with IOC mining (URLs, IPs, domains, registry keys, mutexes), capability tagging (networking, process injection, persistence, anti-debug), optional YARA matching, and a weighted 0-100 threat score with an explainable signal breakdown. Console and JSON output. 57 tests, CI green.
ghostmobile
A static security analyzer for mobile app packages. For Android APKs it ships a dependency-free binary AndroidManifest.xml decoder (string pool, resource map, namespace and element chunks) plus a matching encoder used to build real test fixtures, then runs eight checks: debuggable, allowBackup, cleartext traffic, exported components without permission, dangerous permissions, weak custom permissions, missing v1 / v2 signature, and hardcoded secrets. For iOS IPAs it parses Info.plist and entitlements for App Transport Security exceptions, URL schemes, sensitive capabilities, and risky entitlements. Console, JSON, and SARIF 2.1.0 output. 42 tests, CI green.
ghostdlp
A data-leak prevention and sensitive-data classifier. Sixteen validated detectors find PII, financial data, and credentials across files and directories: emails, SSNs, phones, credit-card PANs (Luhn-validated with brand detection), IBANs (mod-97) and US routing numbers (ABA checksum), AWS / Google / GitHub / Slack keys, private-key blocks, JWTs, and a high-entropy secret heuristic. Validation cuts false positives (a Luhn-invalid number is not flagged). Findings are masked by default, support YAML policy overrides, and can be redacted to typed placeholders. Console, masked JSON, and SARIF output with a `--fail-on` CI gate. 60 tests, CI green.
05. Thoughts & Writing
06. What's Next?
I'm always open to discussing new projects, cybersecurity research collaborations, or opportunities to contribute to your team. Whether you have a question or just want to say hello, my inbox is always open.