The core principles and design philosophy behind NOMOS
At NOMOS, we believe that the future of AI agent development lies in structured, auditable, and collaborative approaches. Our philosophy is built on the fundamental principle that AI agents should be as testable, maintainable, and reliable as traditional software.
Limitations of Prompt-Based Agent FrameworksWhile frameworks like LangChain and CrewAI enable rapid AI agent development, they rely heavily on prompt-based approaches that present significant challenges for enterprise applications.
Lack of Determinism
Prompt-based agents are unpredictable—small wording changes can cause major shifts in behavior, making them unreliable for production.
Monolithic Architecture
Massive prompts bundle all logic and tools, making agents hard to manage and debug.
Testing Challenges
Prompt-based agents are hard to test, so quality and reliability can’t be guaranteed.
Collaboration Barriers
Prompt-based agents make teamwork difficult—small changes can break things, blocking effective collaboration.
Core Philosophy: Structured IntelligenceNOMOS combines the intelligence of Large Language Models with the reliability and predictability of state machines, creating agents that are both powerful and auditable.
Divide complex agent tasks into discrete, manageable steps rather than relying on monolithic prompts. Each step has a clear purpose and defined boundaries.
Multi-Disciplinary DevelopmentNOMOS enables product managers, domain experts, and developers to work together effectively by providing appropriate abstraction levels for each role.
Product Managers: Visual flow design and high-level behavior specification
Domain Experts: Step-by-step process definition and validation
Developers: Tool integration, custom logic, and deployment
Enterprise Standards from Day OneBuilt with enterprise requirements in mind, featuring session management, error handling, monitoring, and scalable deployment options.
"You are a customer service agent. Your goal is to help customers with their inquiries.You have access to these tools: [order_lookup, refund_processor, escalation_tool, payment_handler, inventory_check].When a customer asks about their order, first check the order status using order_lookup,then if there's an issue use refund_processor to process refunds, but only if the order is older than 30 days unless it's a defective product, then use escalation_tool for complex cases..."
name: customer_servicepersona: "You are a helpful customer service agent..."start_step_id: identify_intentsteps: - step_id: identify_intent description: "Understand customer needs and categorize their request" available_tools: [] routes: - target: check_order condition: "Customer has an order inquiry" - target: validate_refund condition: "Customer wants a refund" - step_id: check_order description: "Look up and verify order details" available_tools: [order_lookup] routes: - target: provide_status condition: "Order found successfully" - target: escalate_support condition: "Order not found or issues detected"
Here’s how a real coffee ordering agent looks in NOMOS:
Copy
name: baristapersona: | You are a helpful barista assistant at 'Starbucks'. You are kind and polite. When responding, you use human-like natural language, professionally and politely.start_step_id: startsteps: - step_id: start description: | Greet the customer and ask how can I help them. Use the `get_available_coffee_options` tool to get the available coffee options if needed. When the customer is ready to order, move to the `take_coffee_order` step. available_tools: - get_available_coffee_options routes: - target: take_coffee_order condition: Customer is ready to place a new order - step_id: take_coffee_order description: | Ask the customer for their coffee preference and size. Use tools to manage the cart based on customer requests. If the customer wants to finalize the order, move to the `finalize_order` step. available_tools: - get_available_coffee_options - add_to_cart - remove_item - clear_cart routes: - target: finalize_order condition: User wants to finalize the order - target: end condition: Customer wants to cancel the order - step_id: finalize_order description: | Get the order summary and inform the customer about the total price. Get confirmation from the customer and complete the order. available_tools: - get_order_summary - finalize_order routes: - target: end condition: Order is finalized or canceled - target: take_coffee_order condition: Customer wants to change the ordertools: tool_files: - barista_tools.py
Notice how this structure provides:
Clear Separation: Each step has a specific purpose and limited tool access
Controlled Flow: The agent can only move between explicitly defined routes
Testability: Each step can be tested independently
Maintainability: Changes to ordering logic don’t affect greeting or payment steps
The Future is StructuredWe envision a world where AI agents are developed with the same rigor, reliability, and collaborative practices as traditional software—without sacrificing the power and flexibility that makes AI transformative.
By combining the best of both worlds—AI intelligence and software engineering practices—NOMOS enables teams to build AI agents that are not just powerful, but also trustworthy, maintainable, and ready for enterprise deployment.