Packages
nous
0.7.0
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Nous.MixProject do
use Mix.Project
@version "0.7.0"
@source_url "https://github.com/nyo16/nous"
def project do
[
app: :nous,
version: @version,
elixir: "~> 1.15",
start_permanent: Mix.env() == :prod,
deps: deps(),
docs: docs(),
aliases: aliases(),
description: "AI agent framework for Elixir with multi-provider LLM support",
source_url: @source_url,
package: package(),
elixirc_paths: elixirc_paths(Mix.env()),
dialyzer: [
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
plt_add_apps: [:mix]
]
]
end
def application do
[
extra_applications: [:logger],
mod: {Nous.Application, []}
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
# OpenAI client library
{:openai_ex, "~> 0.9.17"},
# Anthropic Claude client library (optional)
# To enable Anthropic support, add {:anthropix, "~> 0.6.2"} to your deps
{:anthropix, "~> 0.6.2", optional: true},
# Google Gemini client library (optional)
# To enable Gemini support, add {:gemini_ex, "~> 0.8.1"} to your deps
{:gemini_ex, "~> 0.8.1", optional: true},
# JSON
{:jason, "~> 1.4"},
# Validation
{:ecto, "~> 3.11"},
# HTTP client (required by openai_ex)
{:finch, "~> 0.18"},
# HTTP client for Mistral API
{:req, "~> 0.4"},
# Telemetry
{:telemetry, "~> 1.2"},
# Note: For Prometheus metrics, users can add {:prom_ex, "~> 1.11"} and {:plug, "~> 1.18"}
# to their deps. The Nous.PromEx.Plugin will automatically be available.
# Dev/Test
{:ex_doc, "~> 0.31", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:mox, "~> 1.1", only: :test}
]
end
defp docs do
[
main: "readme",
extras: [
"README.md",
# Getting Started
{"docs/getting-started.md", filename: "getting_started", title: "Getting Started Guide"},
# Examples and Tutorials
{"examples/README.md", filename: "examples_overview", title: "Examples Overview"},
{"examples/quickstart/README.md", filename: "quickstart", title: "5-Minute Quickstart"},
# Learning Paths
{"examples/tutorials/README.md", filename: "tutorials_overview", title: "Tutorial Overview"},
{"examples/reference/README.md", filename: "reference_overview", title: "Reference Guide"},
# Feature Guides
{"examples/reference/tools.md", filename: "tools_reference", title: "Tools & Function Calling"},
{"examples/reference/streaming.md", filename: "streaming_reference", title: "Streaming & Real-time"},
{"examples/reference/providers.md", filename: "providers_reference", title: "Providers & Models"},
{"examples/reference/patterns.md", filename: "patterns_reference", title: "Patterns & Architecture"},
# Production Guides
{"docs/guides/liveview-integration.md", filename: "liveview_integration", title: "Phoenix LiveView Integration"},
{"docs/guides/best_practices.md", filename: "best_practices", title: "Production Best Practices"},
{"docs/guides/tool_development.md", filename: "tool_development", title: "Tool Development Guide"},
{"docs/guides/troubleshooting.md", filename: "troubleshooting", title: "Troubleshooting Guide"},
{"docs/guides/migration_guide.md", filename: "migration_guide", title: "Migration Guide"},
# Design Documents
{"docs/design/llm_council_design.md", filename: "council_design", title: "LLM Council Design"}
],
source_ref: "v#{@version}",
source_url: @source_url,
groups_for_modules: [
"Core API": [
Nous,
Nous.Agent,
Nous.ReActAgent
],
"Agent Execution": [
Nous.AgentRunner,
Nous.AgentServer,
Nous.RunContext
],
"Model Providers": [
Nous.Model,
Nous.ModelParser,
Nous.ModelDispatcher,
Nous.Models.Behaviour,
Nous.Models.OpenAICompatible,
Nous.Models.Anthropic,
Nous.Models.Gemini,
Nous.Models.Mistral
],
"Tool System": [
Nous.Tool,
Nous.ToolSchema,
Nous.ToolExecutor
],
"Built-in Tools": [
Nous.Tools.BraveSearch,
Nous.Tools.DateTimeTools,
Nous.Tools.StringTools,
Nous.Tools.TodoTools,
Nous.Tools.ReActTools
],
"Data Types": [
Nous.Types,
Nous.Usage,
Nous.Messages
],
"Infrastructure": [
Nous.Telemetry,
Nous.Errors
],
"Integrations": [
Nous.PromEx.Plugin
]
]
]
end
defp package do
[
licenses: ["MIT"],
links: %{
"GitHub" => @source_url
}
]
end
defp aliases do
[docs: ["docs", ©_images/1]]
end
defp copy_images(_) do
File.mkdir_p!("doc/images")
File.cp!("images/header.jpeg", "doc/images/header.jpeg")
File.cp!("images/logo.jpeg", "doc/images/logo.jpeg")
end
end