Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ray-Ban Meta AI Voice Agent — Amazon Bedrock AgentCore

⚠️ Disclaimer: The iOS code in this project was built with the assistance of Kiro, an agentic AI IDE, to bridge a gap in Swift/iOS expertise. This is a demo project — it is not intended for production use.

Hands-free AI assistant for Meta Ray-Ban smart glasses powered by Amazon Bedrock AgentCore and Strands Agents. Say a wake word, ask anything — the agent responds through the glasses speakers.

AWS CDK Swift Strands Agents AgentCore

Ray-Ban AI Agent iOS app icon      Ray-Ban voice agent listening for wake word Hey Penelope and answering an IMDb query hands-free      Ray-Ban AI agent iOS sign-in screen powered by Amazon Cognito

Hands-Free AI Voice Agent for Meta Ray-Ban Glasses — Amazon Bedrock AgentCore architecture diagram


What This Does

Voice-controlled AI agent that runs on Meta Ray-Ban glasses. The agent uses wake word detection, processes natural language queries, and speaks responses directly through the glasses speakers — no need to touch the phone.

Ray-Ban Meta AI Voice Agent — hands-free voice flow: wake word, confirmation, question, agent response

The agent has access to web search, IMDb ratings, GitHub repository search, notes (Obsidian), and math. Supports Amazon Bedrock, Anthropic, and OpenAI as model providers. Users authenticate via Amazon Cognito — the API is fully protected, no API keys stored on the device.


Memory Architecture

The agent uses two layers of memory following STM/LTM principles:

Short-Term Memory (STM) — conversation context within a session, powered by Amazon Bedrock AgentCore Runtime isolated sessions. A new session starts each time the glasses connect; all messages in that connection share context.

Long-Term Memory (LTM) — user facts and preferences that persist across all sessions, powered by AgentCore Memory. The agent learns your name, location, and preferences over time without any explicit action from you.


Agent Tools

This app uses Strands Agents, which makes it simple to extend the agent with new capabilities — just add a @tool function in Python. It comes with 10 built-in tools:

📓 Obsidian integration note: This demo saves ideas directly to an Obsidian vault stored in Amazon S3. The vault is synced to the Obsidian desktop/mobile app using the Remotely Save community plugin, which supports Amazon S3 as a backend. The agent writes structured Markdown notes to S3 — when you open Obsidian, the new notes appear automatically.

Tool What it does
tavily Web search — current events, news, facts, any internet query
search_imdb Movie and TV show ratings, cast, director, plot from IMDb
search_github_repos Find GitHub repositories by topic, language, or keyword
search_github_code Find code examples on GitHub
save_to_obsidian Save ideas as structured Markdown notes to an S3-backed Obsidian vault
calculator Math and unit conversions
current_time Current date and time
think Complex reasoning before answering
http_request Call public APIs directly
browser Navigate dynamic websites when needed

Security

  • Authentication: Amazon Cognito User Pool — users sign up with email, verify with code, and authenticate via JWT tokens
  • Token storage: iOS Keychain — never UserDefaults
  • API secrets: AWS Systems Manager (SSM) Parameter Store SecureString — never in CloudFormation or code
  • Session: RefreshToken valid for 10 years — session persists across app restarts and phone locks
  • API: Protected by Amazon Cognito authorizer — no request reaches the backend without a valid JWT

Components

Folder Description
ray-ban-voice-agent-bedrock/backend/ AWS Cloud Development Kit (CDK) stack — Amazon API Gateway, AWS Lambda, AgentCore Runtime, Amazon Cognito, Memory
ray-ban-voice-agent-bedrock/ios/ SwiftUI iOS app — voice commands, wake word, Cognito auth
ray-ban-voice-agent-bedrock/backend/agent_files/ Strands agent with tools
ray-ban-voice-agent-bedrock/update_ios_config.py One-command deploy and iOS config update

Model Providers

The agent supports three providers. Priority: Anthropic → OpenAI → Amazon Bedrock (default).

Provider How to activate Default model
Amazon Bedrock Default, no extra config anthropic.claude-3-haiku-20240307-v1:0 — change with -c model_id=...
Anthropic Pass anthropic_api_key claude-opus-4-6
OpenAI Pass openai_api_key gpt-4o

To switch providers without redeploying:

source ray-ban-voice-agent-bedrock/backend/.venv/bin/activate

# Use Anthropic
python ray-ban-voice-agent-bedrock/update_ios_config.py --skip-deploy -c anthropic_api_key="sk-ant-..."

# Use OpenAI
python ray-ban-voice-agent-bedrock/update_ios_config.py --skip-deploy -c openai_api_key="sk-..."

# Back to Bedrock: remove the key from AWS SSM Parameter Store console

Secrets are stored as SSM Parameter Store SecureString — never in CloudFormation or code.


Deploy

The setup requires two deployments:

First deploy — without iOS-specific values (get the outputs first):

cd ray-ban-voice-agent-bedrock/backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cd ..

source backend/.venv/bin/activate
python update_ios_config.py \
  -c tavily_api_key="tvly-..." \
  -c anthropic_api_key="sk-ant-..."   # or openai_api_key, omit for Bedrock

After the first deploy, note the outputs:

  • UniversalLinkDomain — needed for Meta Developer Center registration (see full guide)

Second deploy — after registering on Meta Developer Center, add iOS values:

python update_ios_config.py \
  -c team_id="YOUR_APPLE_TEAM_ID" \
  -c bundle_id="com.example.YourApp" \
  -c obsidian_bucket="your-s3-bucket" \
  -c tavily_api_key="tvly-..." \
  -c anthropic_api_key="sk-ant-..."

This updates the Lambda with Universal Link config and refreshes AppConfig.swift with the Cognito values needed by the iOS app.

Full setup guide: ray-ban-voice-agent-bedrock/README.md


Extend with OpenClaw

OpenClaw is one of the most popular open-source AI agents right now — it runs autonomously, connects to the messaging apps you already use (WhatsApp, Telegram, Slack, Signal, Discord), and comes with 56+ built-in skills for web browsing, file management, email, calendar, shell commands, and more.

Since this project runs on Amazon Bedrock AgentCore, you can host your own OpenClaw instance on the same infrastructure. Use this AWS sample repo to deploy OpenClaw on AgentCore Runtime — each user gets their own isolated container with persistent workspace storage:

👉 sample-host-openclaw-on-amazon-bedrock-agentcore

This gives your Ray-Ban glasses access to the full OpenClaw skill ecosystem on top of the tools already built into this agent.


References


⭐ Did this help you?

If this project helped you build something awesome, please consider starring the repo — it helps others discover it too!

Star


Contributing

Contributions are welcome! See CONTRIBUTING for more information.


Security

If you discover a potential security issue in this project, notify AWS/Amazon Security via the vulnerability reporting page. Please do not create a public GitHub issue.


License

This library is licensed under the MIT-0 License. See the LICENSE file for details.

Releases

Packages

Contributors

Languages