- Build agents faster, and scale them reliably by offloading the
- plumbing work in AI.
+
+ Build agents faster, and deliver them reliably to prod by offloading plumbing work in AI
{/* CTA Buttons */}
diff --git a/apps/www/src/components/IntroSection.tsx b/apps/www/src/components/IntroSection.tsx
index a4e50f53..a2d01161 100644
--- a/apps/www/src/components/IntroSection.tsx
+++ b/apps/www/src/components/IntroSection.tsx
@@ -20,11 +20,10 @@ export function IntroSection() {
{/* Body Text */}
- Plano is a framework-friendly proxy server and dataplane for
- agents, deployed as a sidecar. Plano handles the critical
- plumbing work in AI like agent routing and orchestration,
- comprehensive traces for agentic interactions, guardrail hooks,
- unified APIs for LLMs.
+ Plano is a models-native proxy server and dataplane for agents
+ that handles the critical plumbing work in AI like agent routing and
+ orchestration, comprehensive traces for agentic interactions, guardrail
+ hooks, unified APIs for LLMs
Developers can focus more on modeling workflows.
diff --git a/apps/www/src/components/LogoCloud.tsx b/apps/www/src/components/LogoCloud.tsx
index 5d271339..c2397c60 100644
--- a/apps/www/src/components/LogoCloud.tsx
+++ b/apps/www/src/components/LogoCloud.tsx
@@ -11,16 +11,16 @@ const customerLogos = [
src: "/logos/tmobile.svg",
},
{
- name: "Chase",
- src: "/logos/chase.svg",
+ name: "HP",
+ src: "/logos/hp.svg",
},
{
name: "SanDisk",
src: "/logos/sandisk.svg",
},
{
- name: "HP",
- src: "/logos/hp.svg",
+ name: "Chase",
+ src: "/logos/chase.svg",
},
];
@@ -28,14 +28,28 @@ export function LogoCloud() {
return (
-
+
{customerLogos.map((logo, index) => {
const isLast = index === customerLogos.length - 1;
+ const isTMobile = index === 1; // T-Mobile is before HP
+ const isHP = index === 2; // HP is in center
+ const isSanDisk = index === 3; // SanDisk is after HP
+
+ // Custom spacing for logos around HP on large screens
+ let spacingClass = 'lg:mx-6 xl:mx-8'; // Default spacing
+ if (isTMobile) {
+ spacingClass = 'lg:mr-3 xl:mr-4 lg:ml-6 xl:ml-8'; // Smaller gap to HP
+ } else if (isHP) {
+ spacingClass = 'lg:mx-3 xl:mx-4'; // Smaller gaps on both sides
+ } else if (isSanDisk) {
+ spacingClass = 'lg:ml-3 xl:ml-4 lg:mr-6 xl:mr-8'; // Smaller gap from HP
+ }
+
return (
+ # OR if installed
+ archgw
+ ```
+3. **Check output** and iterate
+
+### Testing with Real Config Files
+
+Use the demo configs in the repo:
+
+```bash
+# From arch/tools directory
+cd ../../demos/samples_python/weather_forecast
+
+# Test with this config
+archgw up arch_config.yaml
+
+# Or test from tools directory
+archgw up ../../demos/samples_python/weather_forecast/arch_config.yaml
+```
+
+### Debugging Tips
+
+1. **Add print statements** for quick debugging:
+ ```python
+ import sys
+ print(f"DEBUG: Variable value: {variable}", file=sys.stderr)
+ ```
+
+2. **Use Python debugger**:
+ ```python
+ import pdb; pdb.set_trace()
+ ```
+
+3. **Check Docker status** manually:
+ ```bash
+ docker ps
+ docker logs archgw
+ docker inspect archgw
+ ```
+
+4. **Test individual functions** in Python REPL:
+ ```bash
+ python
+ >>> from cli.utils import find_config_file
+ >>> find_config_file(".", None)
+ ```
+
+### Common Test Scenarios
+
+#### Test Error Handling
+
+```bash
+# Test missing config file
+archgw up --path /nonexistent
+
+# Test invalid config file
+archgw up /path/to/invalid_config.yaml
+
+# Test missing environment variables
+# (remove required env vars and test)
+archgw up --path /path/to/config
+```
+
+#### Test Edge Cases
+
+```bash
+# Test with minimal config
+archgw up --path /path/to/minimal_config.yaml
+
+# Test with complex config
+archgw up --path /path/to/complex_config.yaml
+
+# Test with different paths
+archgw up --path .
+archgw up --path /absolute/path
+archgw up relative/path/config.yaml
+```
+
+## Example: Testing a Specific Feature
+
+Let's say you're working on improving the `find_config_file` function. Here's how to test it:
+
+```bash
+# Start Python REPL
+python
+
+# Import and test
+>>> from cli.utils import find_config_file
+>>> import os
+>>> find_config_file(".", None)
+'/absolute/path/to/arch/tools/arch_config.yaml'
+
+# Test with explicit file
+>>> find_config_file(".", "/path/to/config.yaml")
+'/path/to/config.yaml'
+
+# Test error cases
+>>> find_config_file("/nonexistent", None)
+# Check what happens
+```
+
+## File Structure Reference
+
+When developing, you'll primarily work with:
+
+- `cli/main.py` - Main CLI commands and entry point
+- `cli/core.py` - Core functionality (start_arch, stop_docker_container, etc.)
+- `cli/utils.py` - Utility functions
+- `cli/docker_cli.py` - Docker-related operations
+- `cli/config_generator.py` - Config validation and generation
+- `cli/targets.py` - Prompt target generation
+- `cli/consts.py` - Constants
+
+## Quick Reference: Common Commands
+
+```bash
+# Setup (one time)
+cd arch/tools
+python -m venv venv
+source venv/bin/activate
+poetry install
+pip install -e . # For editable install
+
+# Development workflow
+# 1. Edit code in cli/*.py
+# 2. Test immediately:
+python -m cli.main [args]
+
+# Or if installed:
+archgw [args]
+
+# Common test commands:
+archgw --version # Check version
+archgw --help # See all commands
+archgw build # Build Docker image
+archgw up --path /path/to/config # Start gateway
+archgw down # Stop gateway
+archgw logs --follow # View logs
+```
+
+## Troubleshooting
+
+### CLI command not found
+- Make sure you activated the virtual environment
+- If using editable install, verify: `pip list | grep archgw`
+- Try: `python -m cli.main` instead
+
+### Changes not reflected
+- If using editable install, changes should be immediate
+- If not, reinstall: `pip install -e .`
+- Check you're editing the right file
+
+### Docker issues
+- Ensure Docker is running: `docker ps`
+- Check container status: `docker ps -a | grep archgw`
+- View logs: `docker logs archgw`
+
+## Finding Demo Configs to Test With
+
+The repository has several demo configs you can use for testing:
+
+```bash
+# List available demos
+ls ../../demos/samples_python/*/arch_config.yaml
+
+# Examples:
+# - ../../demos/samples_python/weather_forecast/arch_config.yaml
+# - ../../demos/samples_python/currency_exchange/arch_config.yaml
+# - ../../demos/samples_python/human_resources_agent/arch_config.yaml
+```
+
+## Tips for Effective Manual Testing
+
+1. **Test one thing at a time** - Make a small change, test it, then move on
+2. **Test both success and failure cases** - Don't just test happy paths
+3. **Use real configs** - Test with actual demo configs to catch real-world issues
+4. **Check error messages** - Make sure error messages are helpful
+5. **Test edge cases** - Empty files, missing fields, invalid values
+6. **Keep notes** - Document what works and what doesn't as you develop
+