2026-02-27 13:22:30 +03:00
2026-02-25 17:25:56 +03:00
2026-02-25 17:40:46 +03:00
2026-02-25 18:30:50 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 18:30:50 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 18:30:50 +03:00
2026-02-25 20:23:16 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-25 16:14:15 +03:00
2026-02-27 13:22:30 +03:00
2026-02-25 16:14:15 +03:00

Eggent

Eggent banner

Eggent is a local-first AI workspace with:

  • project-based organization
  • chat and tool-driven workflows
  • memory and knowledge ingestion
  • MCP server integration
  • cron automation
  • Telegram integration

The app runs as a Next.js service and stores runtime state on disk (./data).

Contributing and Support

Installation (All Supported Paths)

Path Best for Command
One-command installer Fastest setup, Docker-first curl -fsSL https://raw.githubusercontent.com/eggent-ai/eggent/main/scripts/install.sh | bash
Local production Run directly on your machine (Node + npm) npm run setup:local
Docker isolated Containerized runtime npm run setup:docker
Manual setup Full control see Manual Setup

1) One-command Installer

curl -fsSL https://raw.githubusercontent.com/eggent-ai/eggent/main/scripts/install.sh | bash

What it does:

  • installs Docker (best-effort on macOS/Linux) if missing
  • clones/updates Eggent in ~/.eggent
  • runs Docker deployment via scripts/install-docker.sh

Installer environment variables:

  • EGGENT_INSTALL_DIR: target directory (default: ~/.eggent)
  • EGGENT_BRANCH: git branch (default: main)
  • EGGENT_REPO_URL: git repo URL (default: https://github.com/eggent-ai/eggent.git)
  • EGGENT_AUTO_INSTALL_DOCKER: 1/0 (default: 1)
  • EGGENT_APP_BIND_HOST: Docker published bind host (Linux default: 0.0.0.0, otherwise 127.0.0.1)

Example:

EGGENT_INSTALL_DIR=~/apps/eggent \
EGGENT_BRANCH=main \
EGGENT_AUTO_INSTALL_DOCKER=1 \
curl -fsSL https://raw.githubusercontent.com/eggent-ai/eggent/main/scripts/install.sh | bash

On Linux (including VPS installs), the one-command installer publishes app port on all interfaces by default, so app is reachable at http://<server-ip>:3000.

2) Local Production Setup (Node + npm)

npm run setup:local

This script:

  • validates Node/npm availability
  • validates python3 availability (required for Code Execution with Python runtime)
  • validates curl availability (required for terminal commands like curl ...)
  • warns if recommended utilities are missing: git, jq, pip3, rg
  • creates .env from .env.example if needed
  • generates secure defaults for token placeholders
  • installs dependencies
  • builds production output
  • runs a health smoke-check

Start the app:

npm run start

Open:

  • http://localhost:3000

3) Docker Isolated Setup

npm run setup:docker

This script:

  • validates Docker + Compose
  • prepares .env and data/
  • builds image and starts container
  • waits for GET /api/health to succeed

Open:

  • http://localhost:3000

Useful Docker commands:

docker compose logs -f app
docker compose restart app
docker compose down

4) Manual Setup

cp .env.example .env
# ensure python3 is installed and available in PATH
npm install
npm run build
npm run start

Open:

  • http://localhost:3000

5) Development Mode

npm install
npm run dev

Open:

  • http://localhost:3000

Runtime Scripts

Defined in package.json:

  • npm run dev: Next.js dev server
  • npm run build: production build
  • npm run start: production start
  • npm run lint: ESLint
  • npm run setup:one: one-command installer wrapper
  • npm run setup:local: local production bootstrap
  • npm run setup:docker: Docker production bootstrap

Configuration

Base flow:

  • copy .env.example to .env
  • fill required keys

Main environment variables:

Variable Required Purpose
OPENAI_API_KEY Usually yes Default model provider key
ANTHROPIC_API_KEY No Anthropic provider
GOOGLE_API_KEY No Google provider
OPENROUTER_API_KEY No OpenRouter provider
TAVILY_API_KEY No Web search integration
EXTERNAL_API_TOKEN No (auto-generated in setup scripts) External message API auth token
TELEGRAM_BOT_TOKEN No Telegram bot token
TELEGRAM_WEBHOOK_SECRET No (auto-generated in setup scripts) Telegram webhook secret
TELEGRAM_DEFAULT_PROJECT_ID No Default project for Telegram
TELEGRAM_ALLOWED_USER_IDS No Comma/space separated Telegram user_id allowlist
APP_BASE_URL Recommended Public app URL used by integrations
APP_BIND_HOST No Docker port bind host (default: 127.0.0.1; set 0.0.0.0 for public access)
APP_PORT No Published app port (default: 3000)
APP_TMP_DIR No Docker temp directory passed as TMPDIR (default: /app/data/tmp)
PLAYWRIGHT_BROWSERS_PATH No Browser install/cache path for Playwright (default: /app/data/ms-playwright)
NPM_CONFIG_CACHE No npm cache directory for runtime installs (default: /app/data/npm-cache)
XDG_CACHE_HOME No Generic CLI cache directory (default: /app/data/.cache)

Data Persistence

  • Runtime state lives in ./data
  • Docker mounts ./data into /app/data
  • Runtime temp/cache paths are persisted under ./data (for example: tmp/, ms-playwright/, npm-cache/, .cache/)
  • Keep backups of data/ and .env for disaster recovery

Security Defaults

Docker defaults are security-oriented:

  • compose default bind: 127.0.0.1:${APP_PORT:-3000}:3000 (APP_BIND_HOST=0.0.0.0 exposes publicly)
  • non-root container user (node)
  • node user has passwordless sudo in container to allow AI-driven package installation

Health Check

curl http://localhost:3000/api/health

Expected response shape:

  • status: "ok"
  • timestamp
  • version

VPS Production Checklist

  1. Set at least one model API key in .env (OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, or OPENROUTER_API_KEY).
  2. Change default dashboard credentials (admin / admin) in Settings immediately after first login.
  3. If using Telegram integration/webhooks, set public APP_BASE_URL (HTTPS URL reachable from the internet).
  4. Keep data/ persistent and writable by container runtime user.
  5. Ensure outbound network access to provider APIs (443/tcp).

Troubleshooting

  1. App works on localhost but not on 127.0.0.1 (or vice versa)
    Use one host consistently. Browser storage/cookies are origin-scoped.

  2. Docker container does not become healthy
    Run docker compose logs --tail 200 app and verify .env values.

  3. Linux Docker permissions issues
    Try with sudo docker ... or add your user to the docker group.

  4. Build fails after dependency changes
    Run npm install and retry npm run build.

  5. Large downloads fail with No space left on device despite free server disk
    This usually means temp/cache paths are constrained in the runtime environment. Rebuild and restart with current compose defaults, then verify inside container:

docker compose build --no-cache app
docker compose up -d app
docker compose exec app sh -lc 'df -h /tmp /app/data && echo "TMPDIR=$TMPDIR" && echo "PLAYWRIGHT_BROWSERS_PATH=$PLAYWRIGHT_BROWSERS_PATH"'
  1. Process error: spawn python3 ENOENT in Code Execution
    python3 is missing in runtime environment.

For Docker deploys:

docker compose build --no-cache app
docker compose up -d app
docker compose exec app python3 --version

For local (non-Docker) deploys:

sudo apt-get update && sudo apt-get install -y python3
python3 --version
  1. sh: 1: curl: not found in Code Execution (terminal runtime)
    curl is missing in runtime environment.

For Docker deploys:

docker compose build --no-cache app
docker compose up -d app
docker compose exec app curl --version

For local (non-Docker) deploys:

sudo apt-get update && sudo apt-get install -y curl
curl --version
  1. command not found for common terminal/skill commands (git, jq, rg)
    Install recommended CLI utilities:
sudo apt-get update && sudo apt-get install -y git jq ripgrep
  1. ModuleNotFoundError: No module named 'requests' in Python Code Execution
    requests is missing in runtime environment.

For Docker deploys:

docker compose build --no-cache app
docker compose up -d app
docker compose exec app python3 -c "import requests; print(requests.__version__)"

For local (non-Docker) deploys:

sudo apt-get update && sudo apt-get install -y python3-requests
python3 -c "import requests; print(requests.__version__)"
  1. /usr/bin/python3: No module named pip when trying to install Python packages
    pip is missing in runtime environment.

For Docker deploys:

docker compose build --no-cache app
docker compose up -d app
docker compose exec app python3 -m pip --version

For local (non-Docker) deploys:

sudo apt-get update && sudo apt-get install -y python3-pip
python3 -m pip --version
  1. apt-get install ... fails in Code Execution with Permission denied
    Use sudo in terminal runtime:
sudo apt-get update && sudo apt-get install -y ffmpeg

Project Layout (High Level)

src/                # App code (Next.js app router, components, libs)
scripts/            # Install and utility scripts
bundled-skills/     # Built-in skill packs
data/               # Runtime state (generated locally)
docs/               # Additional docs
docker-compose.yml  # Container runtime
Dockerfile          # Multi-stage production image build

Notes

  • License: MIT. See LICENSE at the repository root.
Description
No description provided
Readme MIT 4.2 MiB
Languages
TypeScript 58%
Python 39.4%
Shell 2.2%
CSS 0.3%
Dockerfile 0.1%