Skip to content

ecelab-org/noetik

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NOETIK

Modular AI Orchestration System


"Intelligence isn't magic. It's orchestration."

Noetik is a modular, extensible AI orchestration framework designed to bring together reasoning, memory, and tool-use into a single cohesive loop. It coordinates open-source LLMs, vector memory, shell tools, APIs, and user-defined functions to enable intelligent, autonomous action.


๐Ÿ” Features

  • Planner-powered orchestration: Use any LLM (local or remote) to decide what actions to take.
  • Tool registry: Define modular tools in Python; auto-discover and invoke them via the planner.
  • Memory integration: Chroma/Weaviate/JSON-based memory for stateful reasoning.
  • Multi-turn agent loop: Reflect, act, and reason across multiple steps.
  • Pluggable components: Swap planners, tools, memory, or executors with minimal friction.
  • Client-server architecture: Core logic in API with multiple frontends (CLI, Web UI).

๐Ÿ“ Project Structure

noetik/                               # Root project directory
โ”œโ”€โ”€ src/                              # Source code root
โ”‚   โ””โ”€โ”€ noetik/                       # Main package directory
โ”‚       โ”œโ”€โ”€ api/                      # Core API backend
โ”‚       โ”‚   โ”œโ”€โ”€ __init__.py            # Package initializer
โ”‚       โ”‚   โ”œโ”€โ”€ app.py                 # FastAPI implementation and business logic
โ”‚       โ”‚   โ””โ”€โ”€ models.py              # Pydantic models for API requests/responses
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ client/                   # Frontend clients
โ”‚       โ”‚   โ”œโ”€โ”€ __init__.py            # Package initializer
โ”‚       โ”‚   โ”œโ”€โ”€ cli.py                 # Command-line interface client
โ”‚       โ”‚   โ””โ”€โ”€ webapp.py              # Web UI client interface
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ core/                     # Core agent components
โ”‚       โ”‚   โ”œโ”€โ”€ __init__.py            # Package initializer
โ”‚       โ”‚   โ”œโ”€โ”€ planner.py             # Interface with LLMs for planning
โ”‚       โ”‚   โ”œโ”€โ”€ schema.py              # Tool call + planner schemas
โ”‚       โ”‚   โ””โ”€โ”€ tool_executor.py       # Tool dispatch logic
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ memory/                   # Memory and storage capabilities
โ”‚       โ”‚   โ”œโ”€โ”€ __init__.py            # Package initializer
โ”‚       โ”‚   โ”œโ”€โ”€ memory_store.py        # Saving and retrieving agent turns
โ”‚       โ”‚   โ””โ”€โ”€ vector_memory.py       # Embedding and vector DB interface
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ tools/                    # Tool definitions and implementations
โ”‚       โ”‚   โ”œโ”€โ”€ __init__.py            # Tool registry + decorators
โ”‚       โ”‚   โ””โ”€โ”€ [additional tool files] # Various tool implementations
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ __init__.py                # Package initializer for noetik
โ”‚       โ”œโ”€โ”€ common.py                  # Common utilities (ANSI colors, etc.)
โ”‚       โ”œโ”€โ”€ config.py                  # Centralized settings and environment vars
โ”‚       โ””โ”€โ”€ main.py                    # Entry point: CLI, API, or Web UI
โ”‚
โ”œโ”€โ”€ tests/                            # Test suite
โ”‚   โ””โ”€โ”€ test_tool_executor.py          # Tests for tool execution system
โ”‚
โ”œโ”€โ”€ .dockerignore                      # Files to ignore during Docker build
โ”œโ”€โ”€ .env.template                      # Template for environment configuration
โ”œโ”€โ”€ .gitignore                         # Git ignore patterns
โ”œโ”€โ”€ docker-compose.yml                 # Docker Compose configuration
โ”œโ”€โ”€ Dockerfile                         # Container definition
โ”œโ”€โ”€ LICENSE                            # Project license
โ”œโ”€โ”€ pyproject.toml                     # Python package configuration
โ”œโ”€โ”€ README.md                          # This documentation
โ””โ”€โ”€ start.sh                           # Convenience script for Docker startup

๐Ÿ“‹ Requirements

Docker Setup (Recommended)

  • Docker Engine (20.10.0+)
  • Docker Compose (2.0.0+)

Manual Setup

  • Python 3.11+
  • pip package manager
  • Required Python packages (installed via Poetry):
    • LLM libraries (OpenAI, Anthropic)
    • Vector database clients (ChromaDB)
    • Web frameworks (FastAPI, Uvicorn)
    • Utility libraries (Pydantic, HTTPX)

The Docker setup automatically configures the correct Python version and all dependencies in an isolated environment, which is why it's the recommended approach.


๐Ÿš€ Quickstart

Option 1: Using Docker (Recommended)

# Clone the repository
$ git clone https://github.com/ecelab-org/noetik.git
$ cd noetik

# Start the container (automatically builds and configures) and run in API mode (default)
$ ./start.sh

# Or run in CLI mode
$ ./start.sh --mode cli

# Or run in Web UI mode
$ ./start.sh --mode web

# For help with options
$ ./start.sh --help

The start.sh script will:

  • Check for Docker and Docker Compose
  • Create a .env file from the template if needed
  • Build the container only when dependencies change (faster restarts)
  • Start the container in the selected mode (api, cli, or web)

Option 2: Manual Setup

# Clone the repository
$ git clone https://github.com/ecelab-org/noetik.git
$ cd noetik

# Install using Poetry
$ pip install poetry
$ poetry install

# Run the application
$ poetry run python -m noetik.main

Environment Configuration

Noetik uses environment variables for configuration. Copy .env.template to .env and modify as needed:

cp .env.template .env
# Edit .env with your preferred settings and API keys

Key variables include:

  • API_PORT: The port for the API backend (default: 8000)
  • WEBUI_PORT: The port for the Web UI (default: 8080)
  • PLANNER: Your LLM provider (openai, anthropic, tgi)
  • *_API_KEY: API keys for various services

๐Ÿ–ฅ๏ธ Usage

Noetik follows a client-server architecture, where the API serves as the backend and both CLI and Web UI are clients. All core functionality is implemented in the API, ensuring consistent behavior across interfaces.

CLI Mode

Using Docker:

./start.sh --mode cli

Using Python directly:

python -m noetik.main --mode cli

Example interaction:

๐Ÿ”ฎ  Noetik shell - type 'exit' to quit.

๐Ÿง‘ You: Tell me about the weather
๐Ÿค– What location would you like weather information for?

๐Ÿง‘ You: New York
๐Ÿค– (fetching weather data...)

Web UI Mode

Using Docker:

./start.sh --mode web

Using Python directly:

python -m noetik.main --mode web

This starts a web interface accessible at http://localhost:8080 (or the port specified in your .env file).

API Mode

Using Docker:

./start.sh --mode api

Using Python directly:

python -m noetik.main --mode api

Example API requests:

Health check:

curl http://localhost:8000/health

Create a session:

curl -X POST http://localhost:8000/sessions

Send a message:

curl -X POST http://localhost:8000/agent \
  -H "Content-Type: application/json" \
  -d '{"message": "What is the capital of France?", "session_id": "your-session-id"}'

๐Ÿง  Why "Noetik"?

From the Greek noetikos (ฮฝฮฟฮทฯ„ฮนฮบฯŒฯ‚), meaning "of the mind or intellect." Noetik is about reasoning. Not just answering questions, but understanding context, reflecting, and acting with memory and tools.


โ“ Troubleshooting

  • Port already in use: Change the API_PORT or WEBUI_PORT values in your .env file
  • Connection refused: Ensure the container is running properly with docker ps
  • Environment variables not working: Check that your .env file is in the project root
  • API not responding: When using CLI or Web UI, ensure the API has fully started

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


โœจ Taglines

  • "Orchestrating intelligence, one decision at a time."
  • "Plug in tools. Wire up models. Let Noetik think."
  • "Cognitive infrastructure for autonomous AI agents."

๐Ÿงฉ Contributing

Pull requests welcome! Especially for new tools, planner wrappers, and memory backends.

  • Run black and ruff before submitting.
  • Include docstrings and type hints.
  • Add your tool to tools/__init__.py with @register_tool().

Built with clarity, curiosity, and composability. โœจ

About

Noetik is a modular AI orchestration assistant that thinks in tools, acts with precision, and adapts with memory. Designed for developers, researchers, and tinkerers, Noetik coordinates local and cloud-based LLMs, APIs, and knowledge stores to solve complex problems through reasoning, action, and reflection.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors