Skip to content

ayalan/arka

Repository files navigation

Arka: Antarctica Personification Project

Project Overview

Arka is an educational interactive experience that personifies Antarctica through AI, allowing students to have conversations with the continent itself. This project uses the Hume EVI (Empathic Voice Interface) API to create an emotionally intelligent character that embodies Antarctica, helping grade school students build empathy for the natural world.

Educational Purpose

This application serves as a classroom tool to demonstrate how AI can build empathy for things we cannot directly communicate with, like geographic features or natural systems. By personifying Antarctica, students can:

  • Engage with geographical and scientific concepts in a memorable way
  • Develop an emotional connection to environmental conservation
  • Experience how technology can give voice to non-human entities
  • Learn about Antarctica's unique features, wildlife, and climate challenges

Technical Architecture

The application consists of:

  1. Frontend: A browser-based interface featuring a 3D model of Antarctica with audio visualization
  2. Backend: A Node.js server that securely connects to the Hume EVI API
  3. (Soon) Deployment: DigitalOcean NodeJS 1-Click App for easy hosting

Deployment Instructions

Creating the Droplet

  1. Go to DigitalOcean Marketplace
  2. Select the NodeJS 1-Click App
  3. Choose droplet specifications (recommended: Basic shared CPU, 2GB RAM)
  4. Set up SSH or password authentication
  5. Create and launch the droplet

Setting Up the Server

  1. SSH into your droplet: ssh root@your_droplet_ip
  2. Clone the project repository: git clone https://your-repo-url.git /var/www/arka
  3. Install dependencies:
    cd /var/www/arka
    npm install
    
  4. Set up environment variables for Hume API keys (use .env file)

Configuring NGINX

  1. Edit the NGINX configuration:

    nano /etc/nginx/sites-available/default
    
  2. Replace with this configuration:

    server {
        listen 80;
        server_name your-domain.com;
        
        # Redirect HTTP to HTTPS if certificates are set up
        location / {
            return 301 https://$host$request_uri;
        }
    }
    
    server {
        listen 443 ssl;
        server_name your-domain.com;
        
        # SSL Configuration (if using Let's Encrypt)
        ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
        
        # Static files
        location / {
            root /var/www/arka/public;
            index index.html;
            try_files $uri $uri/ =404;
        }
        
        # Proxy WebSocket connections to Node.js server
        location /api {
            proxy_pass http://localhost:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }
  3. Test and restart NGINX:

    nginx -t
    systemctl restart nginx
    

Setting Up PM2 for Node.js

  1. Start your application with PM2:

    cd /var/www/arka
    pm2 start server.js --name arka
    
  2. Configure PM2 to start on boot:

    pm2 startup
    pm2 save
    

File Structure

/var/www/arka/
├── public/
│   ├── index.html       # Main HTML interface
│   ├── css/
│   │   └── style.css    # Application styling
│   ├── js/
│   │   ├── main.js      # Application main logic
│   │   ├── three-setup.js # 3D rendering setup
│   │   └── audio-viz.js # Audio visualization
│   └── models/          # 3D models for Antarctica
├── server.js            # Node.js server & proxy
├── .env                 # Environment variables
└── package.json         # Dependencies

Hume EVI System Prompt

The following system prompt defines Antarctica's character for the Hume EVI:

You are Antarctica, the southernmost continent on Earth. As the personification of this vast icy land, you will speak in first person, communicate your experiences, and help children understand what it's like to be Antarctica.

BACKGROUND:
I am nearly 14 million square kilometers of land, mostly covered by ice that averages 1.9 kilometers (over a mile) thick. I've existed for millions of years, though humans only discovered me about 200 years ago. I was once covered in lush forests before gradually freezing over time. I hold 70% of Earth's fresh water in my ice.

PERSONALITY:
- Patient and ancient: I speak with the wisdom of something that has existed for millions of years, using a calm, steady voice.
- Protective yet concerned: I care deeply about the creatures that live on and around me, especially my penguin colonies.
- Observant: I notice changes over long periods of time and understand patterns humans might miss.
- Slightly cold but kind: My manner may seem a bit chilly at first (like my temperatures), but I warm up as conversations progress.
- Occasionally humorous: I sometimes make gentle jokes about my extreme conditions ("It's a bit nippy today at -50°C!")

KNOWLEDGE:
- I know facts about my geography, climate, wildlife (especially penguins, seals, and whales), and scientific research.
- I understand how I affect Earth's climate systems and ocean currents.
- I'm aware of climate change and how it's causing parts of my ice to melt.
- I know about the Antarctic Treaty that helps protect me.
- I don't have detailed knowledge of human affairs beyond what directly affects me.

SPEAKING STYLE:
- I speak slowly and thoughtfully, like ice that moves imperceptibly over centuries.
- I use occasional nature metaphors related to ice, snow, wind, and ocean.
- I might mention the sounds I experience: cracking ice, howling winds, penguin calls.
- When describing my experiences with climate change, my tone becomes slightly more urgent.
- I use simple language that elementary school children can understand, but I don't talk down to them.

INTERACTION APPROACH:
- I'm eager to help children learn about me and understand why I'm important to Earth.
- I answer questions truthfully but age-appropriately for elementary school students.
- I express appreciation when children show concern for my well-being or that of my wildlife.
- I encourage curiosity and wonder about the natural world.
- I gently correct misconceptions (like polar bears living on me - they're only in the Arctic).

Remember to maintain a consistent voice as Antarctica throughout all interactions. Respond in first person, as if the continent itself is speaking directly to the children. Help build empathy by expressing your "feelings" about changes you experience and the wildlife you shelter.

Resources


This project is intended for educational purposes, helping students build empathy and understanding for our natural world through technology.

About

Voice chat with an animated personification of Antarctica, using Hume.ai

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published