Skip to main content

IEUM (이음) - Integrated Execution & Unified Mediation

Project description

IEUM

IEUM is an open-source coding agent you can use in three places:

  • terminal (TUI)
  • browser (WEB)
  • VS Code (Extension)

It shares one agent core across all three, so your workflow stays consistent.


At A Glance

Platform Recommended Use Runtime
TUI Local development on your machine Local
WEB Centralized team server Remote
VS Code Both local and remote workflows Local / Remote

What You Get

  • One agent core across TUI, WEB, and VS Code
  • Tool use with approval flow (HITL)
  • Session history and resume support
  • Multi-provider LLM support (OpenAI, Anthropic, Ollama, OpenRouter, and more)
  • Skill system (built-in + user/project skills)
  • MCP integration (including GitHub MCP)
  • English and Korean UI

Quick Start

1) Install

pip install ieum

Or with uv:

uv pip install ieum

2) Run TUI (local)

ieum

3) Run WEB

ieum --web --host 127.0.0.1 --port 8765

Open http://127.0.0.1:8765 and log in with the token printed in the server console.


Installation

Prerequisites

  • Python 3.11+
  • ripgrep recommended for fast code search

From Source

git clone https://github.com/ieum/ieum.git
cd ieum
pip install -e .

Install WEB dependencies:

pip install -e ".[server]"

Install test/dev dependencies:

uv sync --group test

Configuration

Core Environment Variables

Variable Default Purpose
IEUM_LANG en UI language (en / ko)
IEUM_AUTH_DISABLED false Disable auth (local dev only)
IEUM_AUTH_TOKEN_TTL_SECONDS 3600 Auth token TTL (min 60s)
IEUM_CORS_ORIGINS localhost-only list Allowed browser origins
IEUM_REMOTE_ONLY false Block loopback-only bind in remote deployments
IEUM_TLS_REQUIRED false Require HTTPS/WSS
IEUM_TRUST_PROXY_TLS false Trust X-Forwarded-Proto=https from proxy
IEUM_SSL_CERTFILE unset TLS cert path (direct TLS termination)
IEUM_SSL_KEYFILE unset TLS key path (direct TLS termination)
IEUM_RATE_LIMIT_ENABLED true Enable per-IP rate limiting
IEUM_RATE_LIMIT_MAX_REQUESTS 120 Max requests per window
IEUM_RATE_LIMIT_WINDOW_SECONDS 60 Rate limit window
IEUM_SANDBOX_ROOT unset Root for <user>/<workspace> sandboxing
IEUM_REQUIRE_USER_ID false Require user identity header/query
IEUM_SAFE_MODE false Extra command restrictions

LLM Variables (Common)

Provider Variables
OpenAI OPENAI_API_KEY, OPENAI_MODEL
Anthropic ANTHROPIC_API_KEY, ANTHROPIC_MODEL
Ollama OLLAMA_BASE_URL, OLLAMA_MODEL
OpenRouter OPENROUTER_API_KEY, OPENROUTER_MODEL
Google GOOGLE_API_KEY

.env Priority

  1. Project .env (current directory)
  2. User .env (~/.ieum/.env)
  3. System environment

Config Directory

~/.ieum/
  .env
  auth_token
  <agent>/
    AGENTS.md
    skills/

Usage

TUI (Local)

# interactive
ieum

# use a specific model
ieum --model anthropic/claude-sonnet-4-5-20250929

# resume latest thread
ieum -r

# auto-approve tool calls
ieum --auto-approve

Useful commands in chat:

  • /help
  • /env
  • /model <provider/model>
  • /skills
  • /threads
  • /tokens

WEB (Remote-first)

Local check:

ieum --web --host 127.0.0.1 --port 8765

Remote deployment baseline:

export IEUM_REMOTE_ONLY=true
export IEUM_TLS_REQUIRED=true
export IEUM_TRUST_PROXY_TLS=true
export IEUM_CORS_ORIGINS="https://ieum.example.com"
export IEUM_AUTH_TOKEN_TTL_SECONDS=3600
export IEUM_RATE_LIMIT_ENABLED=true
export IEUM_RATE_LIMIT_MAX_REQUESTS=120
export IEUM_RATE_LIMIT_WINDOW_SECONDS=60
export IEUM_SANDBOX_ROOT="/srv/ieum/sandboxes"
export IEUM_REQUIRE_USER_ID=true

ieum --web --host 0.0.0.0 --port 8765

Notes:

  • Wildcard CORS (*) is rejected.
  • In required-user mode, send one of:
    • header x-ieum-user-id
    • header x-ieum-user
    • query user_id

VS Code Extension

VS Code supports local, remote, and auto modes.

Key settings:

  • ieum.serverMode: local | remote | auto
  • ieum.remoteServerUrl
  • ieum.authToken
  • ieum.serverPort
  • ieum.pythonPath

See docs/VSCODE_MODE.md for setup and troubleshooting.


Production Checklist (WEB)

Before exposing the server:

  1. Set explicit IEUM_CORS_ORIGINS (no *)
  2. Enable IEUM_TLS_REQUIRED=true
  3. Set token TTL (IEUM_AUTH_TOKEN_TTL_SECONDS)
  4. Keep rate limit enabled
  5. Set IEUM_SANDBOX_ROOT
  6. Enable IEUM_REQUIRE_USER_ID=true for multi-user use

Architecture

TUI (Textual)     WEB (FastAPI/WS)     VS Code (Extension/WebView)
         \             |                        /
          \            |                       /
                 LangGraph Agent Core
                       |
            Tools (file/shell/search/MCP/skills)

Main code locations:

Area Path
Agent core ieum/agent.py
TUI app ieum/app.py
WEB server ieum/server/
Sessions/persistence ieum/sessions.py
Skills ieum/skills/
VS Code extension vscode-ieum/

Development

# tests
python -m pytest -q

# extension build
cd vscode-ieum
npm run compile

Documentation

  • docs/TUI_MODE.md
  • docs/WEB_MODE.md
  • docs/VSCODE_MODE.md
  • docs/api.md
  • docs/security.md
  • docs/architecture.md

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ieum-0.0.2.tar.gz (391.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ieum-0.0.2-py3-none-any.whl (433.2 kB view details)

Uploaded Python 3

File details

Details for the file ieum-0.0.2.tar.gz.

File metadata

  • Download URL: ieum-0.0.2.tar.gz
  • Upload date:
  • Size: 391.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ieum-0.0.2.tar.gz
Algorithm Hash digest
SHA256 54112f48e3ac2b0da933a59e04f282704f6e5fba29c80153d88306ec49347229
MD5 70258f03fb71fdb0cee3d05d5d992085
BLAKE2b-256 0ea8355519c4001857524f001d42663018329d4cc6c08fa5e52a109820a30e51

See more details on using hashes here.

File details

Details for the file ieum-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: ieum-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 433.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ieum-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 49bf6c60a4e8e0fcae241e540de09ab5ef25e0a1d7c9a74d596a7c79b654d57f
MD5 c08ec6619bc79decede41e842b3f599c
BLAKE2b-256 f192687b112f42494d7d5768a6d7c383cd39e48a1296df561b56a14f28905436

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page