diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..703712e
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,13 @@
+
+
+ net10.0
+ latest
+ enable
+ enable
+ true
+ false
+ $(MSBuildProjectName)
+ VolcanicAgents
+ 0.1.0
+
+
diff --git a/VolcanicAgenticCore.slnx b/VolcanicAgenticCore.slnx
new file mode 100644
index 0000000..87cc5d5
--- /dev/null
+++ b/VolcanicAgenticCore.slnx
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extensions/Volcanic.AgenticCore.Extensions.Anthropic/AssemblyMarker.cs b/extensions/Volcanic.AgenticCore.Extensions.Anthropic/AssemblyMarker.cs
new file mode 100644
index 0000000..39ca982
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.Anthropic/AssemblyMarker.cs
@@ -0,0 +1 @@
+namespace Volcanic.AgenticCore.Extensions.Anthropic; internal static class AssemblyMarker { }
diff --git a/extensions/Volcanic.AgenticCore.Extensions.Anthropic/Volcanic.AgenticCore.Extensions.Anthropic.csproj b/extensions/Volcanic.AgenticCore.Extensions.Anthropic/Volcanic.AgenticCore.Extensions.Anthropic.csproj
new file mode 100644
index 0000000..5c99e82
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.Anthropic/Volcanic.AgenticCore.Extensions.Anthropic.csproj
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge/Program.cs b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge/Program.cs
new file mode 100644
index 0000000..51bb64e
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge/Program.cs
@@ -0,0 +1 @@
+return 0;
diff --git a/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge.csproj b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge.csproj
new file mode 100644
index 0000000..f3c253e
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge/Volcanic.AgenticCore.Extensions.ClaudeCode.Bridge.csproj
@@ -0,0 +1,9 @@
+
+
+ Exe
+ Proposal-only MCP stdio server used by the ClaudeCode provider extension.
+
+
+
+
+
diff --git a/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode/AssemblyMarker.cs b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode/AssemblyMarker.cs
new file mode 100644
index 0000000..1e2b61d
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode/AssemblyMarker.cs
@@ -0,0 +1 @@
+namespace Volcanic.AgenticCore.Extensions.ClaudeCode; internal static class AssemblyMarker { }
diff --git a/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode/Volcanic.AgenticCore.Extensions.ClaudeCode.csproj b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode/Volcanic.AgenticCore.Extensions.ClaudeCode.csproj
new file mode 100644
index 0000000..29f2349
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.ClaudeCode/Volcanic.AgenticCore.Extensions.ClaudeCode.csproj
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/extensions/Volcanic.AgenticCore.Extensions.OpenAI/AssemblyMarker.cs b/extensions/Volcanic.AgenticCore.Extensions.OpenAI/AssemblyMarker.cs
new file mode 100644
index 0000000..cb5d77c
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.OpenAI/AssemblyMarker.cs
@@ -0,0 +1 @@
+namespace Volcanic.AgenticCore.Extensions.OpenAI; internal static class AssemblyMarker { }
diff --git a/extensions/Volcanic.AgenticCore.Extensions.OpenAI/Volcanic.AgenticCore.Extensions.OpenAI.csproj b/extensions/Volcanic.AgenticCore.Extensions.OpenAI/Volcanic.AgenticCore.Extensions.OpenAI.csproj
new file mode 100644
index 0000000..5c99e82
--- /dev/null
+++ b/extensions/Volcanic.AgenticCore.Extensions.OpenAI/Volcanic.AgenticCore.Extensions.OpenAI.csproj
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/samples/Volcanic.AgenticCore.Sample.Headless/Program.cs b/samples/Volcanic.AgenticCore.Sample.Headless/Program.cs
new file mode 100644
index 0000000..d7982c5
--- /dev/null
+++ b/samples/Volcanic.AgenticCore.Sample.Headless/Program.cs
@@ -0,0 +1 @@
+Console.WriteLine("headless sample");
diff --git a/samples/Volcanic.AgenticCore.Sample.Headless/Volcanic.AgenticCore.Sample.Headless.csproj b/samples/Volcanic.AgenticCore.Sample.Headless/Volcanic.AgenticCore.Sample.Headless.csproj
new file mode 100644
index 0000000..4f3c446
--- /dev/null
+++ b/samples/Volcanic.AgenticCore.Sample.Headless/Volcanic.AgenticCore.Sample.Headless.csproj
@@ -0,0 +1,14 @@
+
+
+ Exe
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Volcanic.AgenticCore.Abstractions/AssemblyMarker.cs b/src/Volcanic.AgenticCore.Abstractions/AssemblyMarker.cs
new file mode 100644
index 0000000..e40fd26
--- /dev/null
+++ b/src/Volcanic.AgenticCore.Abstractions/AssemblyMarker.cs
@@ -0,0 +1 @@
+namespace Volcanic.AgenticCore.Abstractions; internal static class AssemblyMarker { }
diff --git a/src/Volcanic.AgenticCore.Abstractions/Volcanic.AgenticCore.Abstractions.csproj b/src/Volcanic.AgenticCore.Abstractions/Volcanic.AgenticCore.Abstractions.csproj
new file mode 100644
index 0000000..e30b936
--- /dev/null
+++ b/src/Volcanic.AgenticCore.Abstractions/Volcanic.AgenticCore.Abstractions.csproj
@@ -0,0 +1,8 @@
+
+
+ Contracts for VolcanicAgenticCore extensions, providers and tools.
+
+
+
+
+
diff --git a/src/Volcanic.AgenticCore/AssemblyMarker.cs b/src/Volcanic.AgenticCore/AssemblyMarker.cs
new file mode 100644
index 0000000..b0920a5
--- /dev/null
+++ b/src/Volcanic.AgenticCore/AssemblyMarker.cs
@@ -0,0 +1 @@
+namespace Volcanic.AgenticCore; internal static class AssemblyMarker { }
diff --git a/src/Volcanic.AgenticCore/Volcanic.AgenticCore.csproj b/src/Volcanic.AgenticCore/Volcanic.AgenticCore.csproj
new file mode 100644
index 0000000..465a0d5
--- /dev/null
+++ b/src/Volcanic.AgenticCore/Volcanic.AgenticCore.csproj
@@ -0,0 +1,14 @@
+
+
+ Headless, extensible agent runtime (pi clone) organised as vertical slices.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Volcanic.AgenticCore.Extensions.Tests/GlobalUsings.cs b/tests/Volcanic.AgenticCore.Extensions.Tests/GlobalUsings.cs
new file mode 100644
index 0000000..c802f44
--- /dev/null
+++ b/tests/Volcanic.AgenticCore.Extensions.Tests/GlobalUsings.cs
@@ -0,0 +1 @@
+global using Xunit;
diff --git a/tests/Volcanic.AgenticCore.Extensions.Tests/SmokeTests.cs b/tests/Volcanic.AgenticCore.Extensions.Tests/SmokeTests.cs
new file mode 100644
index 0000000..c16a9ce
--- /dev/null
+++ b/tests/Volcanic.AgenticCore.Extensions.Tests/SmokeTests.cs
@@ -0,0 +1,7 @@
+namespace Volcanic.AgenticCore.Extensions.Tests;
+
+public class SmokeTests
+{
+ [Fact]
+ public void ProjectCompiles() => Assert.True(true);
+}
diff --git a/tests/Volcanic.AgenticCore.Extensions.Tests/Volcanic.AgenticCore.Extensions.Tests.csproj b/tests/Volcanic.AgenticCore.Extensions.Tests/Volcanic.AgenticCore.Extensions.Tests.csproj
new file mode 100644
index 0000000..d35844f
--- /dev/null
+++ b/tests/Volcanic.AgenticCore.Extensions.Tests/Volcanic.AgenticCore.Extensions.Tests.csproj
@@ -0,0 +1,22 @@
+
+
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Volcanic.AgenticCore.Tests/GlobalUsings.cs b/tests/Volcanic.AgenticCore.Tests/GlobalUsings.cs
new file mode 100644
index 0000000..c802f44
--- /dev/null
+++ b/tests/Volcanic.AgenticCore.Tests/GlobalUsings.cs
@@ -0,0 +1 @@
+global using Xunit;
diff --git a/tests/Volcanic.AgenticCore.Tests/SmokeTests.cs b/tests/Volcanic.AgenticCore.Tests/SmokeTests.cs
new file mode 100644
index 0000000..ac2d3d9
--- /dev/null
+++ b/tests/Volcanic.AgenticCore.Tests/SmokeTests.cs
@@ -0,0 +1,7 @@
+namespace Volcanic.AgenticCore.Tests;
+
+public class SmokeTests
+{
+ [Fact]
+ public void ProjectCompiles() => Assert.True(true);
+}
diff --git a/tests/Volcanic.AgenticCore.Tests/Volcanic.AgenticCore.Tests.csproj b/tests/Volcanic.AgenticCore.Tests/Volcanic.AgenticCore.Tests.csproj
new file mode 100644
index 0000000..f75015c
--- /dev/null
+++ b/tests/Volcanic.AgenticCore.Tests/Volcanic.AgenticCore.Tests.csproj
@@ -0,0 +1,18 @@
+
+
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+