The seed of the Isaac platform: the CLI dispatcher, config management, module loader, and the berth extension machinery โ and not much else. Everything else (the server, sessions, LLM dispatch, tools, comms) is a module that plugs in.
Install the foundation, then grow it by adding modules to your config:
isaac init
# then add modules to <root>/config/isaac.edn:
# {:modules {:isaac.http {:git/url "..." :git/sha "..."}}}The foundation ships exactly one command (init) and built-in berths
(:isaac/cli, :isaac.config/schema, :isaac.config/check). Modules declare
their own berths and contribute to others' via isaac-manifest.edn โ the
platform uses the same extension API that third-party modules do.
isaac.foundation.main/isaac.foundation.cli.registryโ CLI dispatch; commands arrive as:isaac/cliberth contributions from module manifests.isaac.foundationโ Tier-1 public API facade for module authors (see FOUNDATION.md).isaac.foundation.module.*โ module discovery (tools.deps coordinates in user config), manifest reading/validation, berth processing.isaac.foundation.config.*โ config loading, schema composition (:isaac.config/schemaberth), validation checks (:isaac.config/checkberth), entity files, companions.isaac.foundation.schema.*โ schema runtime: lexicon extensions, dynamic schema,[:registered-in? ...]validation.- Shared utilities:
isaac.foundation.fs,isaac.foundation.logger,isaac.foundation.nexus,isaac.foundation.scheduler.runtime,isaac.foundation.shell,isaac.foundation.config.root.
Babashka-first. Run things with:
bb isaac --help # the CLI
bb spec # speclj specs (60s timeout)
bb features # gherclj acceptance tests (60s timeout; skips @slow, @wip)
bb features-slow # launcher/subprocess @slow features only (60s timeout)
bb ci # spec + fast features (60s timeout)From the JVM, compose :test with a runner alias (shared test deps live in
:test only). Prefer the bb jvm-* tasks โ they enforce the same 60s
timeout as bb spec / bb features:
bb jvm-spec # clj -M:test:spec
bb jvm-features # clj -M:test:features
clj -M:test:mutate # mutation testing (no timeout; not part of ci)The spec tree is exported for consumers as
io.github.slagyr/isaac-foundation-spec (:deps/root "spec"): step
definitions, the marigold fixture world, and the marigold fixture modules.
Consumers should depend on a tagged release (not :local/root). Published tags
are immutable โ see RELEASE.md.
io.github.slagyr/isaac-foundation
{:git/url "https://github.com/slagyr/isaac-foundation.git"
:git/tag "v0.1.1"
:git/sha "36e4a6f10a02b86008eb81aaa20b057387bb4c7a"}Use the :dev-local alias in sibling repos to override back to
../isaac-foundation while developing in the monorepo.
The boundary gates (spec/isaac/foundation_boundary_spec.clj,
spec/isaac/foundation_module_boundary_spec.clj) are permanent guards that
foundation and module code stay on the documented public API.
