-
Notifications
You must be signed in to change notification settings - Fork 9
# Enterprise & Corporate Environment Enhancements for Maestro #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
569e341
86a8f3c
ce2c294
1a5ff37
48cfe43
0d1f9a1
239324c
fdf3b3a
aa61c09
d686097
8acf2d0
a09cdec
5796a93
4ffff41
fdd9fba
380833d
2bde582
e7382a6
a1a54bc
f54799c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -58,23 +58,138 @@ This stores credentials in `~/.maestro/` and shares them (read-only) with all co | |
|
|
||
| ### 2. Configure (Optional) | ||
|
|
||
| Edit `~/.maestro/config.yml` to add additional folders and network domains: | ||
| Edit `~/.maestro/config.yml` to customize your setup: | ||
|
|
||
| ```yaml | ||
| firewall: | ||
| allowed_domains: | ||
| - github.com | ||
| - api.anthropic.com | ||
| # Add your domains here | ||
| # For corporate networks with internal DNS (Zscaler, VPN, etc.) | ||
| internal_dns: "10.0.0.1" | ||
| internal_domains: | ||
| - "internal.company.com" | ||
|
|
||
| sync: | ||
| additional_folders: | ||
| - ~/Documents/Code/mcp-servers | ||
| - ~/Documents/Code/helpers | ||
| # Compression: gzip the tar stream when copying files to containers | ||
| # - true (default): smaller transfer, good for remote Docker or slow I/O | ||
| # - false: faster for large local projects (8GB+), skips compression overhead | ||
| compress: false | ||
|
|
||
| # Git user for commits inside containers | ||
| git: | ||
| user_name: "Your Name" | ||
| user_email: "you@example.com" | ||
|
|
||
| # SSH agent forwarding for git authentication (keys stay on host) | ||
| ssh: | ||
| enabled: true | ||
| known_hosts_path: "~/.ssh/known_hosts" # mount host's known_hosts to avoid prompts | ||
|
|
||
| # GitHub CLI integration (for PRs, issues, etc.) | ||
| github: | ||
| enabled: true | ||
| hostname: "github.mycompany.com" # For GitHub Enterprise (omit for github.com) | ||
|
|
||
| # AWS Bedrock support (alternative to Anthropic API) | ||
| aws: | ||
| enabled: true | ||
| profile: "your-aws-profile" | ||
| region: "us-east-1" | ||
|
|
||
| bedrock: | ||
| enabled: true | ||
| model: "anthropic.claude-sonnet-4-20250514-v1:0" | ||
|
|
||
| # SSL certificates for corporate HTTPS inspection | ||
| ssl: | ||
| certificates_path: "~/.maestro/certificates" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I guess they're just public certificates. I wonder if there is any risk here that I haven't thought of?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is mostly due to the fact that these need to be part of the java We could simplify by importing from the already-mounted /etc/ssl/certs instead of requiring a separate ~/.maestro/certificates directory. The current approach is:
But for corporate proxies (Zscaler, etc.), their CA cert IS typically in /etc/ssl/certs on the host. So we could just import from there. Simpler approach: # In container startup, import any certs from /etc/ssl/certs
# that aren't already in Java's keystore
for cert in /etc/ssl/certs/*.crt /etc/ssl/certs/*.pem; do
keytool -importcert -noprompt -trustcacerts \
-alias "$(basename $cert)" \
-file "$cert" \
-keystore $JAVA_HOME/lib/security/cacerts \
-storepass changeit 2>/dev/null || true # ignore duplicates
doneThis would:
|
||
|
|
||
| # Android SDK for mobile development | ||
| android: | ||
| sdk_path: "~/Android/Sdk" | ||
|
|
||
| # Container defaults | ||
| containers: | ||
| default_return_to_tui: true # Auto-check "Return to TUI" when creating containers | ||
|
|
||
| # Daemon and notification settings | ||
| daemon: | ||
| check_interval: "10s" # How often to check containers (default: 30m) | ||
| notifications: | ||
| enabled: true | ||
| attention_threshold: "5s" # Notify after this duration of waiting | ||
| notify_on: | ||
kisnandor2 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - attention_needed # When Claude waits for input | ||
| - token_expiring # When auth token is expiring | ||
| ``` | ||
|
|
||
| You can also set firewall rules from the text UI using the `f` shortcut. | ||
|
|
||
| #### AWS Bedrock Setup | ||
|
|
||
| To use Claude via AWS Bedrock instead of the Anthropic API: | ||
|
|
||
| 1. Configure your AWS profile with Bedrock access | ||
| 2. Enable bedrock in config (see above) | ||
| 3. Run `maestro auth` to set up AWS SSO login | ||
| 4. Containers will automatically use Bedrock for Claude | ||
|
|
||
| #### Corporate Network / VPN Setup | ||
|
|
||
| If you're behind a corporate proxy (Zscaler, etc.) or need to access internal resources: | ||
|
|
||
| 1. Set `firewall.internal_dns` to your internal DNS server | ||
| 2. Add internal domains to `firewall.internal_domains` | ||
| 3. Host SSL certificates are automatically mounted for HTTPS inspection | ||
|
|
||
| #### SSL Certificates | ||
|
|
||
| For corporate environments with HTTPS inspection (Zscaler, etc.), place your CA certificates in the configured path: | ||
|
|
||
| 1. Create the certificates directory: `mkdir -p ~/.maestro/certificates` | ||
| 2. Copy your corporate CA certificates (`.crt`, `.pem` files) to this directory | ||
| 3. Certificates are automatically imported into both the system trust store and Java keystore inside containers | ||
|
|
||
| #### Android SDK | ||
|
|
||
| For Android/mobile development, mount your host Android SDK into containers: | ||
kisnandor2 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| 1. Set `android.sdk_path` to your SDK location (e.g., `~/Android/Sdk`) | ||
| 2. The SDK will be mounted read-only at `/opt/android-sdk` inside containers | ||
| 3. Environment variables (`ANDROID_HOME`, `ANDROID_SDK_ROOT`) are automatically configured | ||
|
|
||
| #### Project-Level Exclusions (.maestroignore) | ||
|
|
||
| Create a `.maestroignore` file in your project root to exclude files/directories when copying to containers. This is useful for large projects with build artifacts that shouldn't be transferred. | ||
|
|
||
| ```bash | ||
| # .maestroignore - exclude patterns (like .gitignore) | ||
| # Comments start with # | ||
|
|
||
| # Android/Gradle build artifacts | ||
| build | ||
| .gradle | ||
| .idea | ||
| .cxx | ||
| .kotlin | ||
|
|
||
| # Other common exclusions | ||
| dist | ||
| target | ||
| __pycache__ | ||
| *.log | ||
| ``` | ||
|
|
||
| **Notes:** | ||
| - `node_modules` and `.git` are always excluded by default | ||
| - Each line is passed to `tar --exclude=` | ||
| - Empty lines and lines starting with `#` are ignored | ||
|
|
||
| ### 3. Create Your First Container | ||
|
|
||
| ```bash | ||
|
|
@@ -123,22 +238,27 @@ When connected via `maestro connect`: | |
|
|
||
| _Note: Not tested on Windows._ | ||
|
|
||
| Start the daemon to monitor containers and get desktop notifications: | ||
| The daemon monitors containers and sends desktop notifications when Claude needs your attention. It **auto-starts** when you launch the TUI (`maestro`), but you can also manage it manually: | ||
|
|
||
| ```bash | ||
| maestro daemon start | ||
|
|
||
| # Check status | ||
| maestro daemon status | ||
|
|
||
| # View logs | ||
| maestro daemon logs | ||
| maestro daemon start # Start manually | ||
| maestro daemon stop # Stop the daemon | ||
| maestro daemon status # Check status | ||
| maestro daemon logs # View logs | ||
| ``` | ||
|
|
||
| The daemon monitors: | ||
| - Token expiration (warns when < 1 hour remaining) | ||
| - Container attention needs (bell indicators) | ||
| - Automatic health checks every 30 minutes | ||
| - **Attention needs** - Notifies when Claude is waiting for input (configurable delay) | ||
| - **Token expiration** - Warns when auth token is expiring soon | ||
| - **Container health** - Periodic checks based on `check_interval` | ||
|
|
||
| Configure notification speed in `~/.maestro/config.yml`: | ||
| ```yaml | ||
| daemon: | ||
| check_interval: "10s" # Check every 10 seconds (default: 30m) | ||
| notifications: | ||
| attention_threshold: "5s" # Notify after 5s of waiting | ||
| ``` | ||
|
|
||
| ## Container Status | ||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.