NocturnusAI
NocturnusAI
ライセンスの概要: Business Source License 1.1 (SPDX:
BUSL-1.1)。組織内での内部利用(内部本番環境を含む)は無料です。NocturnusAIまたはその主要な機能をサードパーティ向けの製品/ホスト型サービスとして提供する場合は、商用ライセンスが必要です (licensing@nocturnus.ai)。2030年2月19日にApache 2.0へ移行します。

膨大なターン配列を入力し、スリムなコンテキストウィンドウを出力します。
エージェントがチャット履歴、ツール出力、CRMメモ、再試行、古い要約などをモデル呼び出しのたびに繰り返し送信している場合、NocturnusAIがまずそれを削減します。
主要なワークフローは「述語を学習する」ことではなく、以下の通りです。
すでに持っている生のターンを送信する。
より小さな作業セットを受け取る。
次の質問に向けてそのセットを絞り込む。
差分を再利用し、後のターンでは変更点のみを送信する。
述語、ルール、推論、真理値維持、スコープ、時相論理は依然として存在し、重要です。それらはメインストーリーの背後に配置されるべきであり、前面に出るべきではありません。
ワーキングループ
自然言語ターンにはLLMが必要です。 以下の例では、生のテキストターンをLLM経由で送信し、構造化された事実を抽出します。LLMプロバイダーなしでサーバーを起動した場合、自然言語ターンからは事実が抽出されません。設定オプションについてはクイックスタートを参照するか、LLMなしで動作する述語構文(例:
"customer_tier(acme_corp, enterprise)")を使用してください。
1. 初回削減: POST /context
curl -X POST http://localhost:9300/context \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{
"turns": [
"user: Customer says they are enterprise and blocked on SLA credits.",
"tool: CRM says account is Acme Corp with a 2M ARR contract.",
"agent: Last week support promised to review SLA eligibility.",
"tool: Billing note says renewal is due next month."
],
"maxFacts": 12
}'レスポンスの形状(事実と重要度値はLLMの抽出に依存します):
{
"facts": [
{"predicate":"customer_tier","args":["acme_corp","enterprise"],"salience":0.65},
{"predicate":"contract_value","args":["acme_corp","2000000"],"salience":0.65},
{"predicate":"issue","args":["acme_corp","sla_credits"],"salience":0.64}
],
"totalFactsInKB": 7,
"factsReturned": 3,
"contradictions": 0,
"newFactsExtracted": 3
}2. 目標主導型パス: POST /memory/context
curl -X POST http://localhost:9300/memory/context \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{
"goals": [
{"predicate":"eligible_for_sla","args":["acme_corp"]}
],
"maxFacts": 12,
"sessionId": "ticket-42"
}'次のモデル呼び出しが何を答えようとしているのかがわかっている場合に使用します。
3. 後続のターン: POST /context/diff
curl -X POST http://localhost:9300/context/diff \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{
"sessionId": "ticket-42",
"maxFacts": 12
}'スナップショット間のadded(追加)およびremoved(削除)されたエントリのみを返します。
4. スレッドの終了: POST /context/session/clear
curl -X POST http://localhost:9300/context/session/clear \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{"sessionId":"ticket-42"}'インターフェースの選択
Python SDK
from nocturnusai import SyncNocturnusAIClient
with SyncNocturnusAIClient("http://localhost:9300") as client:
ctx = client.process_turns(
turns=[
"user: Customer says they are enterprise and blocked on SLA credits.",
"tool: CRM says account is Acme Corp with a 2M ARR contract.",
],
scope="ticket-42",
session_id="ticket-42",
)
diff = client.diff_context(session_id="ticket-42", max_facts=12)
client.clear_context_session("ticket-42")
print(ctx.briefing_delta)TypeScript SDK
import { NocturnusAIClient } from 'nocturnusai-sdk';
const client = new NocturnusAIClient({
baseUrl: 'http://localhost:9300',
tenantId: 'default',
});
const ctx = await client.processTurns({
turns: [
'user: Customer says they are enterprise and blocked on SLA credits.',
'tool: CRM says account is Acme Corp with a 2M ARR contract.',
],
scope: 'ticket-42',
sessionId: 'ticket-42',
});
const diff = await client.diffContext({
sessionId: 'ticket-42',
maxFacts: 12,
});
await client.clearContextSession('ticket-42');
console.log(ctx.briefingDelta);MCP
NocturnusをMCPサーバーとして追加します:
{
"mcpServers": {
"nocturnus": {
"url": "http://localhost:9300/mcp/sse",
"transport": "sse"
}
}
}各ターンでcontextツールを使用して、重要度順にランク付けされた作業セットを取得します。目標主導型の組み立てや差分が必要な場合は、MCPとHTTPコンテキストエンドポイントを組み合わせて使用してください。
ワークフローの背後にあるもの
バックエンドのメカニズムが必要な場合、NocturnusAIは以下を提供します:
決定論的な事実とルールのストレージ
証明チェーンを伴う後向き推論
真理値維持と矛盾処理
ttl、validFrom、validUntilを備えた時相事実X-DatabaseおよびX-Tenant-IDによるマルチテナンシー同じエンジン上でのMCP、REST、Python SDK、TypeScript SDK、CLIインターフェース
これがバックエンドです。製品の前面にあるストーリーは、依然としてターンの削減です。
クイックスタート
Docker (最速)
docker run -d --name nocturnusai -p 9300:9300 \
--restart unless-stopped \
-v nocturnusai-data:/data \
ghcr.io/auctalis/nocturnusai:latest動作確認:
curl http://localhost:9300/healthロジックエンジンを試す(LLM不要で即座に動作):
curl -X POST http://localhost:9300/tell \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{"predicate":"customer_tier","args":["acme_corp","enterprise"]}'
curl -X POST http://localhost:9300/tell \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{"predicate":"contract_value","args":["acme_corp","2000000"]}'
curl -X POST http://localhost:9300/ask \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{"predicate":"customer_tier","args":["acme_corp","?tier"]}'以上です。サーバーが実行され、データは名前付きDockerボリュームに永続化され、自動的に再起動します。自然言語ターンの抽出(上記のワーキングループ)を行うには、LLMプロバイダーを追加してください。次のセクションを参照してください。
Ollamaを使用したDocker(自然言語抽出を有効化)
Ollamaをローカルで実行している場合:
docker run -d --name nocturnusai -p 9300:9300 \
--add-host=host.docker.internal:host-gateway \
-e LLM_PROVIDER=ollama \
-e LLM_MODEL=granite3.3:8b \
-e LLM_BASE_URL=http://host.docker.internal:11434/v1 \
-e EXTRACTION_ENABLED=true \
ghcr.io/auctalis/nocturnusai:latestインストールスクリプト (CLI + セットアップウィザード)
curl -fsSL https://raw.githubusercontent.com/Auctalis/nocturnusai/main/install.sh | bashCLIバイナリをダウンロードし、対話型セットアップウィザードを起動してLLMプロバイダー(Ollama、Anthropic、OpenAI、Google、またはスキップ)を選択します。永続的なDocker Composeインストールを作成します。
目的が明確な場合のショートカット:
curl -fsSL ... | bash -s -- --host-ollama # Reuse local Ollama
curl -fsSL ... | bash -s -- --ollama # Bundle Ollama in Docker
curl -fsSL ... | bash -s -- --key sk-ant-... # Use AnthropicPython SDK
pip install nocturnusaiTypeScript SDK
npm install nocturnusai-sdkMCPクライアント
mcp-configs/から設定をコピーしてください。
このリポジトリから (コントリビューター向け)
make up-ollama
make smokeCLI
CLIは、対話的な調査や重要度ウィンドウの取得に役立ちます:
nocturnusai # Interactive REPL
nocturnusai -e "context 10" # Salience-ranked working set
nocturnusai -e "compress" # Simplified alias: POST /memory/compress
nocturnusai -e "cleanup 0.05" # Simplified alias: POST /memory/cleanup目標主導型のコンテキストウィンドウや差分については、CLIと併せてREST APIまたはSDKを使用してください。
ドキュメント
完全なドキュメント: nocturnus.ai
ターン削減ワークフローから始める | |
生のターン -> 最適化 -> 差分 -> クリア | |
RESTエンドポイントとレスポンス形状 | |
PythonおよびTypeScriptクライアントメソッド | |
LangChain, CrewAI, AutoGen, LangGraph, OpenAI Agents, Anthropic, MCP | |
MCP設定とコンテキストAPIの併用 | |
事実、ルール、推論、重要度、スコープ | |
APIキー, RBAC, TLS, 保存時の暗号化 |
Docker Compose (上級者向け)
永続的な設定、監視、またはOllamaのバンドル用:
git clone https://github.com/Auctalis/nocturnusai.git && cd nocturnusai
make up # Server using .env.example defaults
make up-ollama # + Ollama (reuses host or starts bundled)
make up-monitoring # + Prometheus + Grafana
make smoke # Verify health + context endpointソースからのビルド
JDK 17以上が必要です。
./gradlew :nocturnusai-server:run # HTTP server on :9300
./gradlew :nocturnusai-cli:run # Interactive REPL (JVM)
./gradlew :nocturnusai-cli:nativeCompile # Build native binary
./gradlew test # Full test suiteコントリビューション
CONTRIBUTING.mdを参照してください。good first issueラベルが付いた課題は、良い入り口となります。
セキュリティ
脆弱性の報告は、GitHub Security Advisoriesを通じて非公開で行ってください。SECURITY.mdを参照してください。
ライセンス
Business Source License 1.1 - 非商用利用および組織内での内部本番利用は無料です。NocturnusAIを製品またはサービスとしてサードパーティに提供する場合は、licensing@nocturnus.aiからの商用ライセンスが必要です。2030年2月19日にApache 2.0へ移行します。LICENSEおよびDISCLAIMER.mdを参照してください。
法的および安全に関する通知
NocturnusAIは決定論的な推論エンジンですが、その出力の信頼性は提供された事実の正確性に依存します。
真実性の保証なし。 「検証済み」とは推論の論理的一貫性を指すものであり、現実世界の主張の正確性を保証するものではありません。
自律的な高リスク決定には不向き。 独立した人間の検証ステップなしに、医療、金融、法律、または物理的な安全に関わる自律的な決定にこのエンジンを使用しないでください。
ロジックレイヤーのみ。 NocturnusAIは情報と推論を提供するものであり、アクションを実行するものではありません。
免責事項。 DISCLAIMER.mdおよびLICENSEを参照してください。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Auctalis/nocturnusai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server