Context
My daily work involves operating in parallel across multiple AWS accounts, several FortiGates, various customer environments and my own personal infrastructure. Every routine operation — checking a VPN tunnel, validating policies, pulling a usage report, spinning up a lab — requires opening multiple consoles, recalling commands and sustaining constant context-switching throughout the day.
I needed a single natural-language entry point capable of understanding my environment and, more importantly, executing operations rather than merely retrieving information.
Assistant design
“Jarvis” represents the full integration of my infrastructure into Claude Code, structured around four components:
- Persistent memory of the environment: AWS accounts, topologies, prior technical decisions, relevant contacts and previously attempted solutions along with their outcomes.
- Custom MCP servers exposing concrete actions: listing VPNs, running diagnostics, starting or stopping GPU nodes, querying FortiManager, among others.
- Custom commands for recurring flows. For example, “diagnose this VPN tunnel” triggers a complete playbook: CloudTrail analysis, StartupAction validation and Reachability Analyzer execution, all within a single conversation.
- Reusable skills for repetitive tasks (pull request reviews, security reviews, project initialization), stored persistently on disk.
The net effect is the transformation of a significant portion of manual work into auditable conversational interactions.
Design principles
Memory structured by type
Rather than a single notes file, memory is segmented by type: user profile, feedback (applied corrections), project context and external references. Each type carries explicit criteria for when new information should be captured and when it should be consulted. This separation prevents memory from degrading into an unreadable dump and ensures the assistant retrieves it only when relevant.
Action over read
Most assistants limit themselves to consultation; Jarvis executes. This approach demands rigorous design: mandatory confirmation before destructive operations, strict separation between personal and customer environments, and an explicit abort mechanism available at all times.
Failure traceability
Every incident or unsuccessful attempt is logged not as code, but as operational knowledge. When I return to the same problem months later, Jarvis surfaces the history of prior approaches and the reasons they did not work, preventing repeated mistakes.
Lessons learned
- The usefulness of an agent is not measured by the number of actions it can perform, but by the number of repetitive decisions it removes from the human operator.
- The boundary between an assistant that suggests and one that operates transforms the entire design: auditability, reversibility and blast radius cease to be secondary concerns and become first-class requirements.
- Unstructured memory produces noise; segmenting it by type, with explicit capture and application rules, scales markedly better.
Next steps
I plan to release portions of the configuration as a reference for engineers interested in building their own operational assistant. The expensive investment is not the first integration, but consolidating the decision pattern of what to automate, what requires human confirmation and what should remain manual.